diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake index 4ee9df9920..80714b8b1f 100644 --- a/CMakeInstallation.cmake +++ b/CMakeInstallation.cmake @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. ##### # Contains variables and settings used # by the CMake build system in order to @@ -72,7 +78,7 @@ IF(NC_DPKG) ENDMACRO(getdpkg_arch) getdpkg_arch(dpkg_arch) - SET(CPACK_DEBIAN_PACKAGE_NAME "netcdf4-dev") + SET(CPACK_DEBIAN_PACKAGE_NAME "netcdf4-dev") SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${dpkg_arch}") SET(CPACK_DEBIAN_PACKAGE_DEPENDS "zlib1g (>= 1:1.2.3.4), libhdf5-7 (>= 1.8.11), libcurl4-openssl-dev (>= 7.22.0)") ENDIF() @@ -127,4 +133,4 @@ set(CPACK_COMPONENT_DEPENDENCIES_DESCRIPTION set(CPACK_COMPONENT_DOCUMENTATION_DESCRIPTION "The NetCDF-C user documentation.") -INCLUDE(CPack) \ No newline at end of file +INCLUDE(CPack) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0374c5c6b9..bc68266372 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1150,8 +1150,8 @@ IF (ENABLE_PARALLEL_TESTS AND NOT USE_PARALLEL) ENDIF() # Enable special filter test; experimental when using cmake. -OPTION(ENABLE_FILTER_TESTING "Enable filter testing. Ignored if shared libraries or netCDF4 are not enabled" OFF) -IF(NOT ENABLE_NETCDF4) +OPTION(ENABLE_FILTER_TESTING "Enable filter testing. Ignored if shared libraries or netCDF4 are not enabled" ON) +IF(ENABLE_FILTER_TESTING AND NOT ENABLE_NETCDF_4) MESSAGE(WARNING "ENABLE_FILTER_TESTING requires netCDF-4. Disabling.") SET(ENABLE_FILTER_TESTING OFF CACHE BOOL "") ENDIF() @@ -1408,8 +1408,13 @@ CHECK_FUNCTION_EXISTS(_filelengthi64 HAVE_FILE_LENGTH_I64) CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP) CHECK_FUNCTION_EXISTS(mremap HAVE_MREMAP) -IF(NOT HAVE_MMMAP OR NOT HAVE_MREMAP) - MESSAGE(WARNING "mmap or mremap not found: disabling MMAP support.") +# Check to see if MAP_ANONYMOUS is defined. +CHECK_C_SOURCE_COMPILES(" +#include +int main() {int x = MAP_ANONYMOUS;}" HAVE_MAPANON) + +IF(NOT HAVE_MMMAP OR NOT HAVE_MREMAP OR NOT HAVE_MAPANON) + MESSAGE(WARNING "mmap or mremap or MAP_ANONYMOUS not found: disabling MMAP support.") SET(ENABLE_MMAP OFF) ENDIF() diff --git a/COPYRIGHT b/COPYRIGHT index 0994357664..af669df4d9 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,39 +1,11 @@ -The NetCDF Copyright. +Copyright 2018 Unidata -Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, -2015, 2016 -University Corporation for Atmospheric Research/Unidata. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -Portions of this software were developed by the Unidata Program at the -University Corporation for Atmospheric Research. - -Access and use of this software shall impose the following obligations -and understandings on the user. The user is granted the right, without -any fee or cost, to use, copy, modify, alter, enhance and distribute -this software, and any derivative works thereof, and its supporting -documentation for any purpose whatsoever, provided that this entire -notice appears in all copies of the software, derivative works and -supporting documentation. Further, UCAR requests that the user credit -UCAR/Unidata in any publications that result from the use of this -software or in any product that includes this software, although this -is not an obligation. The names UCAR and/or Unidata, however, may not -be used in any advertising or publicity to endorse or promote any -products or commercial entity unless specific written permission is -obtained from UCAR/Unidata. The user also understands that -UCAR/Unidata is not obligated to provide the user with any support, -consulting, training or assistance of any kind with regard to the use, -operation and performance of this software nor to provide the user -with any updates, revisions, new versions or "bug fixes." - -THIS SOFTWARE IS PROVIDED BY UCAR/UNIDATA "AS IS" AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL UCAR/UNIDATA BE LIABLE FOR ANY SPECIAL, -INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING -FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, -NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION -WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/CTestConfig.cmake.in b/CTestConfig.cmake.in index 6c992f34c7..fd83217684 100644 --- a/CTestConfig.cmake.in +++ b/CTestConfig.cmake.in @@ -1,4 +1,10 @@ -## This file should be placed in the root directory of your project. +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. +# This file should be placed in the root directory of your project. ## Then modify the CMakeLists.txt file in the root directory of your ## project to incorporate the testing dashboard. ## diff --git a/CTestCustom.cmake b/CTestCustom.cmake index 4909748ece..7483a775f0 100644 --- a/CTestCustom.cmake +++ b/CTestCustom.cmake @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. ## This file is used to customize CTest. ## See: ## diff --git a/FixBundle.cmake.in b/FixBundle.cmake.in index 02d43428e8..d22728a014 100644 --- a/FixBundle.cmake.in +++ b/FixBundle.cmake.in @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. INCLUDE(BundleUtilities) # Set bundle to the full path name of the executable diff --git a/Makefile.am b/Makefile.am index 190ee19da2..57cdbc0358 100644 --- a/Makefile.am +++ b/Makefile.am @@ -40,8 +40,12 @@ endif # Is the user building netCDF-4? if USE_NETCDF4 -H5_TEST_DIR = h5_test LIBSRC4_DIR = libsrc4 +endif + +# Is the user building with HDF5? +if USE_HDF5 +H5_TEST_DIR = h5_test LIBHDF5 = libhdf5 NC_TEST4 = nc_test4 endif diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index bd493bd4d8..61e9a48089 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -7,6 +7,9 @@ This file contains a high-level description of this package's evolution. Release ## 4.6.3 - TBD +* Update the license from the home-brewed NetCDF license to the standard 3-Clause BSD License. This change does not result in any new restrictions; it is merely the adoption of a standard, well-known and well-understood license in place of the historic NetCDF license written at Unidata. This is part of a broader push by Unidata to adopt modern, standardized licensing. + + * [BugFix][Enhancement] Modified `nccopy` so that `_NCProperties` is not copied over verbatim but is instead generated based on the version of `libnetcdf` used when copying the file. Additionally, `_NCProperties` are displayed if/when associated with a netcdf3 file, now. See [GitHub #803](https://github.com/Unidata/netcdf-c/issues/803) for more information. ## 4.6.2 - November 16, 2018 diff --git a/appveyor.yml b/appveyor.yml index e6d010fafa..d617344060 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -36,7 +36,7 @@ build: off build_script: - cmd: mkdir build - cmd: cd build - - cmd: cmake .. -G "%CMAKE_GENERATOR%" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%INSTALL_LOC% -DENABLE_BASH_SCRIPT_TESTING=OFF + - cmd: cmake .. -G "%CMAKE_GENERATOR%" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%INSTALL_LOC% -DENABLE_BASH_SCRIPT_TESTING=OFF -DENABLE_FILTER_TESTING=OFF - cmd: if errorlevel 1 exit 1 - cmd: cmake --build . --config Release -- /maxcpucount:4 diff --git a/cmake_uninstall.cmake.in b/cmake_uninstall.cmake.in index ace1e7122d..9dc757d1a4 100644 --- a/cmake_uninstall.cmake.in +++ b/cmake_uninstall.cmake.in @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. CMAKE_POLICY(SET CMP0007 OLD) if (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") diff --git a/config.h.cmake.in b/config.h.cmake.in index 912495581e..a806a9b000 100644 --- a/config.h.cmake.in +++ b/config.h.cmake.in @@ -1,3 +1,13 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ #ifndef CONFIG_H #define CONFIG_H diff --git a/configure.ac b/configure.ac index 18e91b82a7..fafae64418 100644 --- a/configure.ac +++ b/configure.ac @@ -193,10 +193,6 @@ AC_ARG_ENABLE([netcdf-4], [AS_HELP_STRING([--disable-netcdf-4], [do not build with netcdf-4 (else HDF5 and zlib required)])]) test "x$enable_netcdf_4" = xno || enable_netcdf_4=yes -enable_hdf5=$enable_netcdf_4 -AC_MSG_CHECKING([whether we should build with HDF5]) -AC_MSG_RESULT([$enable_hdf5]) - # Synonym AC_ARG_ENABLE([netcdf4], [AS_HELP_STRING([--disable-netcdf4], [(just a synonym for --disable-netcdf-4)])]) @@ -206,6 +202,17 @@ enable_netcdf_4=no fi AC_MSG_RESULT([$enable_netcdf_4]) +# Does the user want to use HDF5? +AC_MSG_CHECKING([whether we should build with HDF5]) +#enable_hdf5=$enable_netcdf_4 +AC_ARG_ENABLE([hdf5], [AS_HELP_STRING([--disable-hdf5], + [do not build with HDF5])]) +test "x$enable_hdf5" = xno || enable_hdf5=yes +if test "x$enable_netcdf_4" = xno ; then +enable_hdf5=no +fi +AC_MSG_RESULT([$enable_hdf5]) + # Does the user require dynamic loading? # This is only for those hdf5 installs that support it. AC_MSG_CHECKING([do we require hdf5 dynamic-loading support]) @@ -852,7 +859,8 @@ AC_CHECK_FUNCS([strlcat snprintf \ getrlimit gettimeofday fsync MPI_Comm_f2c MPI_Info_f2c]) # disable dap4 if netcdf-4 is disabled -if test "x$enable_netcdf_4" = "xno" ; then +#if test "x$enable_netcdf_4" = "xno" ; then +if test "x$enable_hdf5" = "xno" ; then AC_MSG_WARN([netcdf-4 not enabled; disabling DAP4]) enable_dap4=no fi @@ -873,15 +881,24 @@ test "x$enable_mmap" = xyes || enable_mmap=no AC_MSG_RESULT($enable_mmap) # check for mmap and mremap availability before committing to use mmap -AC_CHECK_FUNCS([mmap],[have_mmap=yes],[have_mmap=no]) -AC_CHECK_FUNCS([mremap],[have_mremap=yes],[have_mremap=no]) +have_mmap="$enable_mmap" +AC_CHECK_FUNCS([mmap],[],[have_mmap=no]) +AC_CHECK_FUNCS([mremap],[],[have_mmap=no]) -if test "x$have_mmap" != xyes ; then - echo "mmap function is not available: disabling mmap" - enable_mmap=no +# Check for MAP_ANONYMOUS +AC_COMPILE_IFELSE([AC_LANG_PROGRAM( +[#include ], +[[int x = MAP_ANONYMOUS;]])], + [havemapanon=yes], + [havemapanon=no]) +AC_MSG_CHECKING([whether MAP_ANONYMOUS is defined]) +AC_MSG_RESULT([${havemapanon}]) +if test "x$havemapanon" != xyes ; then + have_mmap=no fi -if test "x$have_mremap" != xyes ; then - echo "mremap function is not available: disabling mmap" + +if test "x$have_mmap" != xyes ; then + echo "mmap functionality is not available: disabling mmap" enable_mmap=no fi @@ -1006,9 +1023,13 @@ AC_CHECK_LIB([m], [floor], [], [AC_MSG_ERROR([Can't find or link to the math library.])]) if test "x$enable_netcdf_4" = xyes; then + AC_DEFINE([USE_NETCDF4], [1], [if true, build netCDF-4]) +fi + +hdf5_parallel=no +if test "x$enable_hdf5" = xyes; then AC_DEFINE([USE_HDF5], [1], [if true, use HDF5]) - AC_DEFINE([USE_NETCDF4], [1], [if true, build netCDF-4]) AC_DEFINE([H5_USE_16_API], [1], [use HDF5 1.6 API]) # Check for the main hdf5 and hdf5_hl library. @@ -1020,20 +1041,10 @@ if test "x$enable_netcdf_4" = xyes; then AC_CHECK_HEADERS([hdf5.h], [], [AC_MSG_ERROR([Compiling a test with HDF5 failed. Either hdf5.h cannot be found, or config.log should be checked for other reason.])]) AC_CHECK_FUNCS([H5Z_SZIP]) - hdf5_parallel=no # H5Pset_fapl_mpiposix and H5Pget_fapl_mpiposix have been removed since HDF5 1.8.12. # Use H5Pset_fapl_mpio and H5Pget_fapl_mpio, instead. AC_CHECK_FUNCS([H5Pget_fapl_mpio H5Pset_deflate H5Z_SZIP H5free_memory H5Pset_libver_bounds H5Pset_all_coll_metadata_ops]) - # The user may have parallel HDF5 based on MPI POSIX. - # if test "x$ac_cv_func_H5Pget_fapl_mpiposix" = xyes; then - # AC_DEFINE([USE_PARALLEL_POSIX], [1], [if true, compile in parallel netCDF-4 based on MPI/POSIX]) - # fi - - # The user may have parallel HDF5 based on MPI mumble mumble. - # if test "x$ac_cv_func_H5Pget_fapl_mpio" = xyes; then - # AC_DEFINE([USE_PARALLEL_MPIO], [1], [if true, compile in parallel netCDF-4 based on MPI/IO]) - # fi # Check to see if HDF5 library has collective metadata APIs, (HDF5 >= 1.10.0) if test "x$ac_cv_func_H5Pset_all_coll_metadata_ops" = xyes; then @@ -1041,7 +1052,6 @@ if test "x$enable_netcdf_4" = xyes; then fi # If parallel is available in hdf5, enable it in the C code. Also add some stuff to netcdf.h. - hdf5_parallel=no if test "x$ac_cv_func_H5Pget_fapl_mpio" = xyes -o "x$ac_cv_func_H5Pget_fapl_mpiposix" = xyes; then hdf5_parallel=yes fi @@ -1072,21 +1082,22 @@ if test "x$enable_netcdf_4" = xyes; then AC_DEFINE([HDF5_HAS_LIBVER_BOUNDS], [1], [if true, netcdf4 file properties will be set using H5Pset_libver_bounds]) fi - # If the user wants hdf4 built in, check it out. - if test "x$enable_hdf4" = xyes; then - AC_CHECK_LIB([jpeg], [jpeg_CreateCompress], [], - [AC_MSG_ERROR([Jpeg library required for --enable-hdf4 builds.])]) - AC_CHECK_HEADERS([mfhdf.h], [], [nc_mfhdf_h_missing=yes]) - if test "x$nc_mfhdf_h_missing" = xyes; then - AC_MSG_ERROR([Cannot find mfhdf.h, yet --enable-hdf4 was used.]) - fi - AC_CHECK_LIB([df], [Hclose], [], [AC_MSG_ERROR([Can't find or link to the hdf4 df library. See config.log for errors.])]) - AC_CHECK_LIB([mfhdf], [NC_arrayfill], [AC_MSG_ERROR([HDF4 library must be built with --disable-netcdf.])], []) - AC_CHECK_LIB([mfhdf], [SDcreate], [], [AC_MSG_ERROR([Can't find or link to the hdf4 mfhdf library. See config.log for errors.])]) +fi - AC_CHECK_LIB([jpeg], [jpeg_set_quality], [], [AC_MSG_ERROR([Can't find or link to the jpeg library (required by hdf4). See config.log for errors.])]) - AC_DEFINE([USE_HDF4], [1], [if true, use HDF4 too]) +# If the user wants hdf4 built in, check it out. +if test "x$enable_hdf4" = xyes; then + AC_CHECK_LIB([jpeg], [jpeg_CreateCompress], [], + [AC_MSG_ERROR([Jpeg library required for --enable-hdf4 builds.])]) + AC_CHECK_HEADERS([mfhdf.h], [], [nc_mfhdf_h_missing=yes]) + if test "x$nc_mfhdf_h_missing" = xyes; then + AC_MSG_ERROR([Cannot find mfhdf.h, yet --enable-hdf4 was used.]) fi + AC_CHECK_LIB([df], [Hclose], [], [AC_MSG_ERROR([Can't find or link to the hdf4 df library. See config.log for errors.])]) + AC_CHECK_LIB([mfhdf], [NC_arrayfill], [AC_MSG_ERROR([HDF4 library must be built with --disable-netcdf.])], []) + AC_CHECK_LIB([mfhdf], [SDcreate], [], [AC_MSG_ERROR([Can't find or link to the hdf4 mfhdf library. See config.log for errors.])]) + + AC_CHECK_LIB([jpeg], [jpeg_set_quality], [], [AC_MSG_ERROR([Can't find or link to the jpeg library (required by hdf4). See config.log for errors.])]) + AC_DEFINE([USE_HDF4], [1], [if true, use HDF4 too]) fi # There are several cases for parallelism: @@ -1096,7 +1107,7 @@ fi # b. do want to use it for netcdf4 # Should we provide parallel io for netcdf-4? -if test "x$enable_netcdf_4" = xyes ; then +if test "x$enable_hdf5" = xyes ; then AC_ARG_ENABLE([parallel4], [AS_HELP_STRING([--disable-parallel4], [disable parallel I/O for netcdf-4, even if it's enabled in libhdf5])], diff --git a/dap4_test/CMakeLists.txt b/dap4_test/CMakeLists.txt index d044b1aba1..a0271057ed 100644 --- a/dap4_test/CMakeLists.txt +++ b/dap4_test/CMakeLists.txt @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + SET(abs_top_srcdir ${CMAKE_CURRENT_SOURCE_DIR}) remove_definitions(-DDLL_EXPORT) diff --git a/dap4_test/Makefile.am b/dap4_test/Makefile.am index 676cb49df2..bf1ab308e2 100644 --- a/dap4_test/Makefile.am +++ b/dap4_test/Makefile.am @@ -1,5 +1,5 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2011, see the COPYRIGHT file for more information. +# Copyright 2018, see the COPYRIGHT file for more information. # This file builds and runs DAP4 tests. diff --git a/dap4_test/baseline/CMakeLists.txt b/dap4_test/baseline/CMakeLists.txt index 2332d8f855..85d40c3a9b 100644 --- a/dap4_test/baseline/CMakeLists.txt +++ b/dap4_test/baseline/CMakeLists.txt @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) diff --git a/dap4_test/baselineraw/CMakeLists.txt b/dap4_test/baselineraw/CMakeLists.txt index 2332d8f855..85d40c3a9b 100644 --- a/dap4_test/baselineraw/CMakeLists.txt +++ b/dap4_test/baselineraw/CMakeLists.txt @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) diff --git a/dap4_test/baselineremote/CMakeLists.txt b/dap4_test/baselineremote/CMakeLists.txt index 2332d8f855..85d40c3a9b 100644 --- a/dap4_test/baselineremote/CMakeLists.txt +++ b/dap4_test/baselineremote/CMakeLists.txt @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) diff --git a/dap4_test/cdltestfiles/CMakeLists.txt b/dap4_test/cdltestfiles/CMakeLists.txt index 2332d8f855..85d40c3a9b 100644 --- a/dap4_test/cdltestfiles/CMakeLists.txt +++ b/dap4_test/cdltestfiles/CMakeLists.txt @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) diff --git a/dap4_test/daptestfiles/CMakeLists.txt b/dap4_test/daptestfiles/CMakeLists.txt index 2332d8f855..85d40c3a9b 100644 --- a/dap4_test/daptestfiles/CMakeLists.txt +++ b/dap4_test/daptestfiles/CMakeLists.txt @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) diff --git a/dap4_test/dmrtestfiles/CMakeLists.txt b/dap4_test/dmrtestfiles/CMakeLists.txt index 2332d8f855..85d40c3a9b 100644 --- a/dap4_test/dmrtestfiles/CMakeLists.txt +++ b/dap4_test/dmrtestfiles/CMakeLists.txt @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) diff --git a/dap4_test/misctestfiles/CMakeLists.txt b/dap4_test/misctestfiles/CMakeLists.txt index 2332d8f855..85d40c3a9b 100644 --- a/dap4_test/misctestfiles/CMakeLists.txt +++ b/dap4_test/misctestfiles/CMakeLists.txt @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) diff --git a/dap4_test/nctestfiles/CMakeLists.txt b/dap4_test/nctestfiles/CMakeLists.txt index 2332d8f855..85d40c3a9b 100644 --- a/dap4_test/nctestfiles/CMakeLists.txt +++ b/dap4_test/nctestfiles/CMakeLists.txt @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) diff --git a/dap4_test/test_data.c b/dap4_test/test_data.c index 5b4569e953..a0bc3c1d13 100644 --- a/dap4_test/test_data.c +++ b/dap4_test/test_data.c @@ -7,6 +7,7 @@ Test the netcdf-4 data building process. */ +#include "config.h" #include #include #include "netcdf.h" diff --git a/debug/README.txt b/debug/README.txt index a772f2c1d9..961bafb1ee 100644 --- a/debug/README.txt +++ b/debug/README.txt @@ -1,5 +1,6 @@ This directory contains various scripts for debugging by Dennis Heimbigner @ Unidata. +DO NOT DELETE. USE AT YOUR OWN PERIL. diff --git a/debug/cf b/debug/cf index b1c8944b7b..5dbde7f30f 100644 --- a/debug/cf +++ b/debug/cf @@ -3,6 +3,7 @@ DB=1 #X=-x +ANSI=1 #MEM=1 #NOTUIL=1 #FAST=1 @@ -36,6 +37,10 @@ if test "x$MEM" = x1 ; then CFLAGS="-fsanitize=address ${CFLAGS}" fi +if test "x$ANSI" = x1 ; then +CFLAGS="-ansi ${CFLAGS}" +fi + stddir="/usr/local" PREFIX=/usr/local diff --git a/debug/cf.cmake b/debug/cf.cmake index a2b31fc13c..7baea55b52 100644 --- a/debug/cf.cmake +++ b/debug/cf.cmake @@ -97,7 +97,7 @@ NCLIB="${NCLIB}/build/liblib" #G="-GUnix Makefiles" #T="--trace-expand" cmake "${G}" $FLAGS .. -if test "x$NOBUILD" == x ; then +if test "x$NOBUILD" = x ; then make all make test fi diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 70a8bf7add..0132cd3b00 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + ##### # Build doxygen documentation, if need be. ##### diff --git a/docs/COPYRIGHT.dox b/docs/COPYRIGHT.dox deleted file mode 100644 index 1062dd5299..0000000000 --- a/docs/COPYRIGHT.dox +++ /dev/null @@ -1,37 +0,0 @@ -/*! \page copyright COPYRIGHT - -Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, -University Corporation for Atmospheric Research/Unidata. - -Portions of this software were developed by the Unidata Program at the -University Corporation for Atmospheric Research. - -Access and use of this software shall impose the following obligations -and understandings on the user. The user is granted the right, without -any fee or cost, to use, copy, modify, alter, enhance and distribute -this software, and any derivative works thereof, and its supporting -documentation for any purpose whatsoever, provided that this entire -notice appears in all copies of the software, derivative works and -supporting documentation. Further, UCAR requests that the user credit -UCAR/Unidata in any publications that result from the use of this -software or in any product that includes this software, although this -is not an obligation. The names UCAR and/or Unidata, however, may not -be used in any advertising or publicity to endorse or promote any -products or commercial entity unless specific written permission is -obtained from UCAR/Unidata. The user also understands that -UCAR/Unidata is not obligated to provide the user with any support, -consulting, training or assistance of any kind with regard to the use, -operation and performance of this software nor to provide the user -with any updates, revisions, new versions or "bug fixes." - -THIS SOFTWARE IS PROVIDED BY UCAR/UNIDATA "AS IS" AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL UCAR/UNIDATA BE LIABLE FOR ANY SPECIAL, -INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING -FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, -NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION -WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ \ No newline at end of file diff --git a/docs/COPYRIGHT.md b/docs/COPYRIGHT.md new file mode 100644 index 0000000000..a1d249f5a1 --- /dev/null +++ b/docs/COPYRIGHT.md @@ -0,0 +1,16 @@ +COPYRIGHT {#copyright} +===================== + +Copyright 2018 Unidata + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in index 6c5e98a996..5aebe4a52a 100644 --- a/docs/Doxyfile.in +++ b/docs/Doxyfile.in @@ -761,7 +761,7 @@ INPUT = \ @abs_top_srcdir@/docs/all-error-codes.md \ @abs_top_srcdir@/docs/FAQ.md \ @abs_top_srcdir@/docs/known_problems.md \ - @abs_top_srcdir@/docs/COPYRIGHT.dox \ + @abs_top_srcdir@/docs/COPYRIGHT.md \ @abs_top_srcdir@/docs/credits.md \ @abs_top_srcdir@/docs/bestpractices.md \ @abs_top_srcdir@/docs/tutorial.dox \ diff --git a/docs/Makefile.am b/docs/Makefile.am index 3290059a11..2e8ea4704a 100644 --- a/docs/Makefile.am +++ b/docs/Makefile.am @@ -1,6 +1,10 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005-2011, see the COPYRIGHT file for more information. -# This file builds the netcdf documentation. +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. # These files will be included with the dist. EXTRA_DIST = netcdf.m4 DoxygenLayout.xml Doxyfile.in footer.html \ @@ -10,7 +14,7 @@ building-with-cmake.md CMakeLists.txt groups.dox install.md notes.md \ install-fortran.md all-error-codes.md credits.md auth.md \ obsolete/fan_utils.html bestpractices.md filters.md indexing.dox \ inmemory.md DAP2.dox attribute_conventions.md FAQ.md \ -file_format_specifications.md known_problems.md COPYRIGHT.dox \ +file_format_specifications.md known_problems.md COPYRIGHT.md \ user_defined_formats.md inmeminternal.dox DAP4.md DAP4.dox # Turn off parallel builds in this directory. diff --git a/docs/images/Makefile.am b/docs/images/Makefile.am index 341f444a03..4bae23eccc 100644 --- a/docs/images/Makefile.am +++ b/docs/images/Makefile.am @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + EXTRA_DIST = aqua.jpg chunking2.png compatibility3.png compression.png \ groups.png nc4-model.png ncatts.png nc-classic-uml.png nccoords.png \ ncfile.png pnetcdf.png terra.jpg netcdf_architecture.png \ diff --git a/docs/user_defined_formats.md b/docs/user_defined_formats.md index 1d874c4027..f8ea7f9adf 100644 --- a/docs/user_defined_formats.md +++ b/docs/user_defined_formats.md @@ -111,4 +111,3 @@ user-defined format. (This is unnecessary if you just want to read HDF4 SD files, since the netCDF C library already includes an HDF4 SD file reader. This user-defined format library uses the same code. It is repackaged as a user-defined library to provide a working sample.) - diff --git a/examples/C/CMakeLists.txt b/examples/C/CMakeLists.txt index 191bc2d741..bea8f4c41d 100644 --- a/examples/C/CMakeLists.txt +++ b/examples/C/CMakeLists.txt @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + SET(exam_C_tests simple_xy_wr simple_xy_rd sfc_pres_temp_wr sfc_pres_temp_rd pres_temp_4D_wr pres_temp_4D_rd) SET(exam_C_tests_source "") FOREACH(F ${exam_C_tests}) diff --git a/examples/C/Makefile.am b/examples/C/Makefile.am index c4996e5e8e..bd8c545574 100644 --- a/examples/C/Makefile.am +++ b/examples/C/Makefile.am @@ -1,5 +1,5 @@ # This is a automake file, part of Unidata's netCDF package. -# Copyright 2006, see the COPYRIGHT file for more information. +# Copyright 2018, see the COPYRIGHT file for more information. # This file builds the C examples. @@ -20,7 +20,7 @@ sfc_pres_temp_rd pres_temp_4D_wr pres_temp_4D_rd TESTS = run_examples.sh # To build netcdf-4, or not to build netcdf-4, that is the question... -if USE_NETCDF4 +if USE_HDF5 # These are the extra netCDF-4 examples. check_PROGRAMS += simple_nc4_wr simple_nc4_rd simple_xy_nc4_wr \ simple_xy_nc4_rd @@ -31,7 +31,7 @@ check_PROGRAMS += filter_example TESTS += run_filter.sh endif -endif #USE_NETCDF4 +endif #USE_HDF5 if USE_PNETCDF # These are the extra netCDF-4 examples. @@ -42,9 +42,9 @@ endif #USE_PNETCDF AM_CPPFLAGS += -I$(top_builddir)/liblib AM_LDFLAGS += ${top_builddir}/liblib/libnetcdf.la -if USE_NETCDF4 +if USE_HDF5 TESTS += run_examples4.sh -endif #USE_NETCDF4 +endif #USE_HDF5 # These files are created by the tests. CLEANFILES = *.nc diff --git a/examples/C/file.c b/examples/C/file.c index f1781d2451..836f044df2 100644 --- a/examples/C/file.c +++ b/examples/C/file.c @@ -1,5 +1,17 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + + /* This example program is part of Unidata's netCDF library for - scientific data access. + scientific data access. This program demonstrates various ways to create a netCDF file, open an existing file, and close a file. @@ -18,7 +30,7 @@ printf("Bailing out in file %s, line %d, error:%s.\n", \ __FILE__, __LINE__, nc_strerror(e)); \ return e; \ -} while (0) +} while (0) #define FILENAME "test.nc" #define VARNAME "var1" @@ -31,7 +43,7 @@ int main() { /* These are netCDF IDs for file, dimension, and variable. */ - int ncid, dimid, varid; + int ncid, dimid, varid; /* This array will hold one ID for each dimension in the variable, in this case, one. */ @@ -41,7 +53,7 @@ main() int data_out[] = {0,1,2,3,4,5,6,7,8,9}; int data_in[DIMLEN]; - int i, res; + int i, res; /* Create a classic format netCDF file, overwritting any file of this name that may already exist. */ @@ -99,11 +111,10 @@ main() fprintf(stderr, "Unexpected value!\n"); return ERROR; } - + /* Close the file again. */ if ((res = nc_close(ncid))) BAIL(res); return 0; } - diff --git a/examples/C/format.c b/examples/C/format.c index 79b0f78346..5559512035 100644 --- a/examples/C/format.c +++ b/examples/C/format.c @@ -1,5 +1,17 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + + /* This example program is part of Unidata's netCDF library for - scientific data access. + scientific data access. This example shows how to create and deal with files of different netcdf formats (i.e. classic vs. 64-bit-offset). @@ -19,7 +31,7 @@ printf("Bailing out in file %s, line %d, error:%s.\n", \ __FILE__, __LINE__, nc_strerror(e)); \ return NC_EXAMPLE_ERROR; \ -} while (0) +} while (0) #define NUMDIMS 2 #define NUMVARS 1 @@ -33,7 +45,7 @@ main() float temp[LAT_LEN][LON_LEN], *fp; char classic_file[] = "classic.nc", offset64_file[] = "offset.nc"; char *file = classic_file; - int i, res; + int i, res; /* Create a bunch of phoney data so we have something to write in the example file. */ @@ -59,12 +71,12 @@ main() BAIL(res); if ((res = nc_def_dim(ncid, "longitude", LON_LEN, &dimids[1]))) BAIL(res); - + /* Define the variable. */ - if ((res = nc_def_var(ncid, "sfc_temp", NC_FLOAT, NUMDIMS, + if ((res = nc_def_var(ncid, "sfc_temp", NC_FLOAT, NUMDIMS, dimids, &temp_varid))) BAIL(res); - + /* We're finished defining metadata. */ if ((res = nc_enddef(ncid))) BAIL(res); @@ -79,4 +91,3 @@ main() return 0; } - diff --git a/examples/C/large_files.c b/examples/C/large_files.c index 12511aee2d..d4642d7092 100644 --- a/examples/C/large_files.c +++ b/examples/C/large_files.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include #include #include @@ -135,7 +146,7 @@ main() { /* create rec2Gp.nc */ for(j=0; j function, which can write any array subset of the variable. */ start[0] = rec; /* We want to write *this* record. */ - if ((res = nc_put_vara_float(ncid, temp_varid, start, count, + if ((res = nc_put_vara_float(ncid, temp_varid, start, count, (float *)temp))) BAIL(res); if ((res = nc_put_vara_float(ncid, pres_varid, start, count, (float *)pres))) BAIL(res); /* We're done writing one record. */ - } + } /* Close the file. We're done, so we can go out and see the new Harry Potter movie! */ @@ -278,4 +289,3 @@ main() return 0; } - diff --git a/examples/C/parallel_vara.c b/examples/C/parallel_vara.c index 240d283600..d958f36b37 100644 --- a/examples/C/parallel_vara.c +++ b/examples/C/parallel_vara.c @@ -188,4 +188,3 @@ int main(int argc, char** argv) MPI_Finalize(); return 0; } - diff --git a/examples/C/pres_temp_4D_wr.c b/examples/C/pres_temp_4D_wr.c index 7524c63b27..b2848ce2d0 100644 --- a/examples/C/pres_temp_4D_wr.c +++ b/examples/C/pres_temp_4D_wr.c @@ -6,7 +6,7 @@ temperatures. It is intended to illustrate the use of the netCDF C API. The companion program pres_temp_4D_rd.c shows how to read the netCDF data file created by this program. -Copyright 2006 University Corporation for Atmospheric +Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. */ @@ -76,7 +76,7 @@ main() /* Loop indexes. */ int lvl, lat, lon, rec, i = 0; - + /* Error handling. */ int retval; @@ -87,7 +87,7 @@ main() lats[lat] = START_LAT + 5.*lat; for (lon = 0; lon < NLON; lon++) lons[lon] = START_LON + 5.*lon; - + for (lvl = 0; lvl < NLVL; lvl++) for (lat = 0; lat < NLAT; lat++) for (lon = 0; lon < NLON; lon++) @@ -118,18 +118,18 @@ main() since coordinate variables only have one dimension, we can simply provide the address of that dimension ID (&lat_dimid) and similarly for (&lon_dimid). */ - if ((retval = nc_def_var(ncid, LAT_NAME, NC_FLOAT, 1, &lat_dimid, + if ((retval = nc_def_var(ncid, LAT_NAME, NC_FLOAT, 1, &lat_dimid, &lat_varid))) ERR(retval); - if ((retval = nc_def_var(ncid, LON_NAME, NC_FLOAT, 1, &lon_dimid, + if ((retval = nc_def_var(ncid, LON_NAME, NC_FLOAT, 1, &lon_dimid, &lon_varid))) ERR(retval); /* Assign units attributes to coordinate variables. */ - if ((retval = nc_put_att_text(ncid, lat_varid, UNITS, + if ((retval = nc_put_att_text(ncid, lat_varid, UNITS, strlen(DEGREES_NORTH), DEGREES_NORTH))) ERR(retval); - if ((retval = nc_put_att_text(ncid, lon_varid, UNITS, + if ((retval = nc_put_att_text(ncid, lon_varid, UNITS, strlen(DEGREES_EAST), DEGREES_EAST))) ERR(retval); @@ -144,18 +144,18 @@ main() /* Define the netCDF variables for the pressure and temperature * data. */ - if ((retval = nc_def_var(ncid, PRES_NAME, NC_FLOAT, NDIMS, + if ((retval = nc_def_var(ncid, PRES_NAME, NC_FLOAT, NDIMS, dimids, &pres_varid))) ERR(retval); - if ((retval = nc_def_var(ncid, TEMP_NAME, NC_FLOAT, NDIMS, + if ((retval = nc_def_var(ncid, TEMP_NAME, NC_FLOAT, NDIMS, dimids, &temp_varid))) ERR(retval); /* Assign units attributes to the netCDF variables. */ - if ((retval = nc_put_att_text(ncid, pres_varid, UNITS, + if ((retval = nc_put_att_text(ncid, pres_varid, UNITS, strlen(PRES_UNITS), PRES_UNITS))) ERR(retval); - if ((retval = nc_put_att_text(ncid, temp_varid, UNITS, + if ((retval = nc_put_att_text(ncid, temp_varid, UNITS, strlen(TEMP_UNITS), TEMP_UNITS))) ERR(retval); @@ -188,10 +188,10 @@ main() for (rec = 0; rec < NREC; rec++) { start[0] = rec; - if ((retval = nc_put_vara_float(ncid, pres_varid, start, count, + if ((retval = nc_put_vara_float(ncid, pres_varid, start, count, &pres_out[0][0][0]))) ERR(retval); - if ((retval = nc_put_vara_float(ncid, temp_varid, start, count, + if ((retval = nc_put_vara_float(ncid, temp_varid, start, count, &temp_out[0][0][0]))) ERR(retval); } @@ -199,7 +199,7 @@ main() /* Close the file. */ if ((retval = nc_close(ncid))) ERR(retval); - + printf("*** SUCCESS writing example file %s!\n", FILE_NAME); return 0; } diff --git a/examples/C/quick_large_files.c b/examples/C/quick_large_files.c index 4ba7a5b394..f5aaa29898 100644 --- a/examples/C/quick_large_files.c +++ b/examples/C/quick_large_files.c @@ -1,5 +1,16 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + /* This example program is part of Unidata's netCDF library for - scientific data access. + scientific data access. This program (quickly, but not thoroughly) tests the large file features. @@ -19,14 +30,14 @@ printf("Bailing out in file %s, line %d, error:%s.\n", \ __FILE__, __LINE__, nc_strerror(e)); \ return NC_EXAMPLE_ERROR; \ -} while (0) +} while (0) #define NUMDIMS 1 #define NUMVARS 2 /* This dim len is the max size for an 8-byte type in 64-bit offset format: (2*32 - 4) / 8, that is, 4 GB minus a bit, on an 8 byte boundary. */ -#define DIM_LEN 536870911 +#define DIM_LEN 536870911 int main() @@ -34,7 +45,7 @@ main() int ncid, spockid, kirkid, dimids[NUMDIMS]; double val_in, val_out = 999.99; size_t index[NUMDIMS] = {DIM_LEN-1}; - int i, res; + int i, res; /* Create the netCDF 64-bit offset format file. */ if ((res = nc_create("example.nc", NC_CLOBBER|NC_64BIT_OFFSET, &ncid))) @@ -47,15 +58,15 @@ main() /* Define dimension. */ if ((res = nc_def_dim(ncid, "longdim", DIM_LEN, dimids))) BAIL(res); - + /* Define two variables. */ - if ((res = nc_def_var(ncid, "spock", NC_DOUBLE, NUMDIMS, + if ((res = nc_def_var(ncid, "spock", NC_DOUBLE, NUMDIMS, dimids, &spockid))) BAIL(res); - if ((res = nc_def_var(ncid, "kirk", NC_DOUBLE, NUMDIMS, + if ((res = nc_def_var(ncid, "kirk", NC_DOUBLE, NUMDIMS, dimids, &kirkid))) BAIL(res); - + /* We're finished defining metadata. */ if ((res = nc_enddef(ncid))) BAIL(res); @@ -69,9 +80,3 @@ main() return 0; } - - - - - - diff --git a/examples/C/quick_small_files.c b/examples/C/quick_small_files.c index 9be8dab686..70f281a619 100644 --- a/examples/C/quick_small_files.c +++ b/examples/C/quick_small_files.c @@ -1,5 +1,16 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + /* This example program is part of Unidata's netCDF library for - scientific data access. + scientific data access. This program will create a large file in netCDF classic format. From the netcdf docs: @@ -25,7 +36,7 @@ printf("Bailing out in file %s, line %d, error:%s.\n", \ __FILE__, __LINE__, nc_strerror(e)); \ return NC_EXAMPLE_ERROR; \ -} while (0) +} while (0) #define NUMDIMS 1 #define NUMVARS 2 @@ -40,7 +51,7 @@ main() int ncid, spockid, kirkid, dimids[NUMDIMS]; double val_in, val_out = 999.99; size_t index[NUMDIMS] = {1}; - int i, res; + int i, res; /* Create the netCDF classic format file. */ if ((res = nc_create("example.nc", NC_CLOBBER, &ncid))) @@ -53,15 +64,15 @@ main() /* Define dimension. */ if ((res = nc_def_dim(ncid, "longdim", DIM_LEN, dimids))) BAIL(res); - + /* Define two variables. */ - if ((res = nc_def_var(ncid, "spock", NC_DOUBLE, NUMDIMS, + if ((res = nc_def_var(ncid, "spock", NC_DOUBLE, NUMDIMS, dimids, &spockid))) BAIL(res); - if ((res = nc_def_var(ncid, "kirk", NC_DOUBLE, NUMDIMS, + if ((res = nc_def_var(ncid, "kirk", NC_DOUBLE, NUMDIMS, dimids, &kirkid))) BAIL(res); - + /* We're finished defining metadata. */ if ((res = nc_enddef(ncid))) BAIL(res); @@ -75,4 +86,3 @@ main() return 0; } - diff --git a/examples/C/run_examples.sh b/examples/C/run_examples.sh index 655314bfae..e7e08bf2c1 100755 --- a/examples/C/run_examples.sh +++ b/examples/C/run_examples.sh @@ -1,4 +1,10 @@ #!/bin/sh +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. # This shell script runs the examples. # Ed Hartnett diff --git a/examples/C/run_examples4.sh b/examples/C/run_examples4.sh index 24691af4e1..5cecfa3a7b 100755 --- a/examples/C/run_examples4.sh +++ b/examples/C/run_examples4.sh @@ -1,4 +1,10 @@ #!/bin/sh +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. # This shell script runs the examples for netCDF4. # Ed Hartnett diff --git a/examples/C/run_filter.sh b/examples/C/run_filter.sh index acd2f787f9..64d1a0a541 100755 --- a/examples/C/run_filter.sh +++ b/examples/C/run_filter.sh @@ -1,6 +1,10 @@ #!/bin/sh -# This shell script runs the examples for netCDF4. -# Ed Hartnett +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. if test "x$srcdir" = x ; then srcdir=`pwd`; fi . ../../test_common.sh diff --git a/examples/C/sfc_pres_temp_more.c b/examples/C/sfc_pres_temp_more.c index 0dd51b6ef5..d2780a68c9 100644 --- a/examples/C/sfc_pres_temp_more.c +++ b/examples/C/sfc_pres_temp_more.c @@ -1,6 +1,6 @@ /* This is part of the netCDF package. - Copyright 2006 University Corporation for Atmospheric + Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. This is a simple example which writes and then reads some surface @@ -72,7 +72,7 @@ main() * applies to the entire file, not just to one variable. Don't * forget that sizeof does not include the null terminator, so if * you want it, you need to add one more byte. */ - if ((retval = nc_put_att_text(ncid, NC_GLOBAL, SONNET_NAME, + if ((retval = nc_put_att_text(ncid, NC_GLOBAL, SONNET_NAME, sizeof(poem) + 1, poem))) return retval; @@ -118,7 +118,7 @@ main() /* Close the file. */ if ((retval = nc_close(ncid))) return retval; - + /* Open the file and check that everything's OK. */ if ((retval = nc_open(FILE_NAME, 0, &ncid))) return retval; @@ -134,7 +134,7 @@ main() free(att_in); if (error) return -2; - + /* Read the data. */ if ((retval = nc_get_var_float(ncid, pres_varid, pres_in))) return retval; diff --git a/examples/C/sfc_pres_temp_rd.c b/examples/C/sfc_pres_temp_rd.c index 315f1bcbeb..d8ff39383c 100644 --- a/examples/C/sfc_pres_temp_rd.c +++ b/examples/C/sfc_pres_temp_rd.c @@ -5,8 +5,8 @@ This is an example which reads some surface pressure and temperatures. The data file read by this program is produced by the companion program sfc_pres_temp_wr.c. It is intended to illustrate the use of the netCDF C API. - -Copyright 2006 University Corporation for Atmospheric + +Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. */ @@ -82,14 +82,14 @@ main() many netCDF variables, dimensions, and global attributes are in the file; also the dimension id of the unlimited dimension, if there is one. */ - if ((retval = nc_inq(ncid, &ndims_in, &nvars_in, &ngatts_in, + if ((retval = nc_inq(ncid, &ndims_in, &nvars_in, &ngatts_in, &unlimdimid_in))) ERR(retval); /* In this case we know that there are 2 netCDF dimensions, 4 netCDF variables, no global attributes, and no unlimited dimension. */ - if (ndims_in != 2 || nvars_in != 4 || ngatts_in != 0 || + if (ndims_in != 2 || nvars_in != 4 || ngatts_in != 0 || unlimdimid_in != -1) return 2; /* Get the varids of the latitude and longitude coordinate @@ -139,12 +139,12 @@ main() them and check them. */ if ((retval = nc_get_att_text(ncid, lat_varid, UNITS, lat_units_in))) ERR(retval); - if (strncmp(lat_units_in, LAT_UNITS, strlen(LAT_UNITS))) + if (strncmp(lat_units_in, LAT_UNITS, strlen(LAT_UNITS))) return 2; if ((retval = nc_get_att_text(ncid, lon_varid, UNITS, lon_units_in))) ERR(retval); - if (strncmp(lon_units_in, LON_UNITS, strlen(LON_UNITS))) + if (strncmp(lon_units_in, LON_UNITS, strlen(LON_UNITS))) return 2; if ((retval = nc_get_att_text(ncid, pres_varid, UNITS, pres_units_in))) diff --git a/examples/C/sfc_pres_temp_wr.c b/examples/C/sfc_pres_temp_wr.c index 9928368a4d..803baf0a49 100644 --- a/examples/C/sfc_pres_temp_wr.c +++ b/examples/C/sfc_pres_temp_wr.c @@ -5,8 +5,8 @@ This example writes some surface pressure and temperatures. It is intended to illustrate the use of the netCDF C API. The companion program sfc_pres_temp_rd.c shows how to read the netCDF data file created by this program. - -Copyright 2006 University Corporation for Atmospheric + +Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. */ @@ -68,7 +68,7 @@ main() /* Loop indexes. */ int lat, lon; - + /* Error handling. */ int retval; @@ -79,7 +79,7 @@ main() lats[lat] = START_LAT + 5.*lat; for (lon = 0; lon < NLON; lon++) lons[lon] = START_LON + 5.*lon; - + for (lat = 0; lat < NLAT; lat++) for (lon = 0; lon < NLON; lon++) { @@ -100,10 +100,10 @@ main() /* Define coordinate netCDF variables. They will hold the coordinate information, that is, the latitudes and longitudes. A varid is returned for each.*/ - if ((retval = nc_def_var(ncid, LAT_NAME, NC_FLOAT, 1, &lat_dimid, + if ((retval = nc_def_var(ncid, LAT_NAME, NC_FLOAT, 1, &lat_dimid, &lat_varid))) ERR(retval); - if ((retval = nc_def_var(ncid, LON_NAME, NC_FLOAT, 1, &lon_dimid, + if ((retval = nc_def_var(ncid, LON_NAME, NC_FLOAT, 1, &lon_dimid, &lon_varid))) ERR(retval); @@ -114,10 +114,10 @@ main() not use null-terminated strings. In general it is up to the reading C program to ensure that it puts null-terminators on strings where necessary.*/ - if ((retval = nc_put_att_text(ncid, lat_varid, UNITS, + if ((retval = nc_put_att_text(ncid, lat_varid, UNITS, strlen(DEGREES_NORTH), DEGREES_NORTH))) ERR(retval); - if ((retval = nc_put_att_text(ncid, lon_varid, UNITS, + if ((retval = nc_put_att_text(ncid, lon_varid, UNITS, strlen(DEGREES_EAST), DEGREES_EAST))) ERR(retval); @@ -125,18 +125,18 @@ main() the dimids of the dimensions of the variables.*/ dimids[0] = lat_dimid; dimids[1] = lon_dimid; - if ((retval = nc_def_var(ncid, PRES_NAME, NC_FLOAT, NDIMS, + if ((retval = nc_def_var(ncid, PRES_NAME, NC_FLOAT, NDIMS, dimids, &pres_varid))) ERR(retval); - if ((retval = nc_def_var(ncid, TEMP_NAME, NC_FLOAT, NDIMS, + if ((retval = nc_def_var(ncid, TEMP_NAME, NC_FLOAT, NDIMS, dimids, &temp_varid))) ERR(retval); /* Define units attributes for vars. */ - if ((retval = nc_put_att_text(ncid, pres_varid, UNITS, + if ((retval = nc_put_att_text(ncid, pres_varid, UNITS, strlen(pres_units), pres_units))) ERR(retval); - if ((retval = nc_put_att_text(ncid, temp_varid, UNITS, + if ((retval = nc_put_att_text(ncid, temp_varid, UNITS, strlen(temp_units), temp_units))) ERR(retval); @@ -162,7 +162,7 @@ main() /* Close the file. */ if ((retval = nc_close(ncid))) ERR(retval); - + printf("*** SUCCESS writing example file sfc_pres_temp.nc!\n"); return 0; } diff --git a/examples/C/simple.c b/examples/C/simple.c index a2a3db3ab2..6091596740 100644 --- a/examples/C/simple.c +++ b/examples/C/simple.c @@ -1,5 +1,16 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + /* This example program is part of Unidata's netCDF library for - scientific data access. + scientific data access. How about a short, but meaningful, netCDF program? @@ -18,7 +29,7 @@ printf("Bailing out in file %s, line %d, error:%s.\n", \ __FILE__, __LINE__, nc_strerror(e)); \ return NC_EXAMPLE_ERROR; \ -} while (0) +} while (0) #define NUMDIMS 2 #define NUMVARS 1 @@ -31,7 +42,7 @@ main() { int ncid, temp_varid, dimids[NUMDIMS]; float temp[LAT_LEN][LON_LEN], *fp; - int i, res; + int i, res; /* Create a bunch of phoney data so we have something to write in the example file. */ @@ -47,14 +58,14 @@ main() BAIL(res); if ((res = nc_def_dim(ncid, "longitude", LON_LEN, &dimids[1]))) BAIL(res); - + /* Define the variable. */ - if ((res = nc_def_var(ncid, "sfc_temp", NC_FLOAT, NUMDIMS, + if ((res = nc_def_var(ncid, "sfc_temp", NC_FLOAT, NUMDIMS, dimids, &temp_varid))) BAIL(res); - + /* We'll store the units. */ - if ((res = nc_put_att_text(ncid, temp_varid, "units", + if ((res = nc_put_att_text(ncid, temp_varid, "units", strlen(CELSIUS), CELSIUS))) BAIL(res); @@ -71,4 +82,3 @@ main() return 0; } - diff --git a/examples/C/simple_nc4_rd.c b/examples/C/simple_nc4_rd.c index cf2adc031a..55768cefc8 100644 --- a/examples/C/simple_nc4_rd.c +++ b/examples/C/simple_nc4_rd.c @@ -7,7 +7,7 @@ features of netCDF-4.0. This example reads a simple file created by simple_nc4_wr.c. This is intended to illustrate the use of the netCDF-4 C API. -This is part of the netCDF package. Copyright 2006-2011 University +This is part of the netCDF package. Copyright 2006-2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. Full documentation of the netCDF can be found at http://www.unidata.ucar.edu/software/netcdf/docs. @@ -41,7 +41,7 @@ main() int x, y, retval; /* The following struct is written as a compound type. */ - struct s1 + struct s1 { int i1; int i2; @@ -61,7 +61,7 @@ main() /* Get the varid of the uint64 data variable, based on its name, in * grp1. */ - if ((retval = nc_inq_varid(grp1id, "data", &varid1))) + if ((retval = nc_inq_varid(grp1id, "data", &varid1))) ERR(retval); /* Read the data. */ @@ -70,7 +70,7 @@ main() /* Get the varid of the compound data variable, based on its name, * in grp2. */ - if ((retval = nc_inq_varid(grp2id, "data", &varid2))) + if ((retval = nc_inq_varid(grp2id, "data", &varid2))) ERR(retval); /* Read the data. */ diff --git a/examples/C/simple_nc4_wr.c b/examples/C/simple_nc4_wr.c index b14b822adc..407db6db7a 100644 --- a/examples/C/simple_nc4_wr.c +++ b/examples/C/simple_nc4_wr.c @@ -6,7 +6,7 @@ some netCDF variables in different subgroups. The variables will include a compound and an enum type, as well as some of the new atomic types, like the unsigned 64-bit integer. -This is part of the netCDF package. Copyright 2006-2011 University +This is part of the netCDF package. Copyright 2006-2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. Full documentation of the netCDF can be found at http://www.unidata.ucar.edu/software/netcdf/docs. @@ -45,7 +45,7 @@ main() int x, y, retval; /* The following struct is written as a compound type. */ - struct s1 + struct s1 { int i1; int i2; @@ -85,7 +85,7 @@ main() /* Define an unsigned 64bit integer variable in grp1, using dimensions * in the root group. */ - if ((retval = nc_def_var(grp1id, "data", NC_UINT64, NDIMS, + if ((retval = nc_def_var(grp1id, "data", NC_UINT64, NDIMS, dimids, &varid1))) ERR(retval); @@ -95,19 +95,19 @@ main() ERR(retval); /* Create a compound type. This will cause nc_reddef to be called. */ - if (nc_def_compound(grp2id, sizeof(struct s1), "sample_compound_type", + if (nc_def_compound(grp2id, sizeof(struct s1), "sample_compound_type", &typeid)) ERR(retval); - if (nc_insert_compound(grp2id, typeid, "i1", + if (nc_insert_compound(grp2id, typeid, "i1", offsetof(struct s1, i1), NC_INT)) ERR(retval); - if (nc_insert_compound(grp2id, typeid, "i2", + if (nc_insert_compound(grp2id, typeid, "i2", offsetof(struct s1, i2), NC_INT)) ERR(retval); /* Define a compound type variable in grp2, using dimensions * in the root group. */ - if ((retval = nc_def_var(grp2id, "data", typeid, NDIMS, + if ((retval = nc_def_var(grp2id, "data", typeid, NDIMS, dimids, &varid2))) ERR(retval); diff --git a/examples/C/simple_xy_wr.c b/examples/C/simple_xy_wr.c index 5aba7c417c..441aa2e30b 100644 --- a/examples/C/simple_xy_wr.c +++ b/examples/C/simple_xy_wr.c @@ -1,6 +1,11 @@ /*! \file An example program demonstrating a simple 2D write. +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. +See netcdf-c/COPYRIGHT file for more info. */ #include @@ -65,7 +70,7 @@ main() /* Define the variable. The type of the variable in this case is * NC_INT (4-byte integer). */ - if ((retval = nc_def_var(ncid, "data", NC_INT, NDIMS, + if ((retval = nc_def_var(ncid, "data", NC_INT, NDIMS, dimids, &varid))) ERR(retval); diff --git a/examples/CDL/CMakeLists.txt b/examples/CDL/CMakeLists.txt index 6507bb7d5d..2c06bf14be 100644 --- a/examples/CDL/CMakeLists.txt +++ b/examples/CDL/CMakeLists.txt @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + SET(CDL_EXAMPLE_TESTS do_comps) FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.sh ${CMAKE_CURRENT_SOURCE_DIR}/*.cdl) diff --git a/examples/CDL/Makefile.am b/examples/CDL/Makefile.am index 0af9bd3aa5..77123a117e 100644 --- a/examples/CDL/Makefile.am +++ b/examples/CDL/Makefile.am @@ -1,6 +1,11 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2006, see the COPYRIGHT file for more information. -# This file builds CDL examples. + +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. # Ed Hartnett # Note which tests depend on other tests. Necessary for make -j check. diff --git a/examples/CDL/do_comps.sh b/examples/CDL/do_comps.sh index 88f80f91f2..ed6709d550 100755 --- a/examples/CDL/do_comps.sh +++ b/examples/CDL/do_comps.sh @@ -1,4 +1,11 @@ #!/bin/sh + +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. # This shell script runs the cmp test on the example programs. # $Id: do_comps.sh,v 1.1 2006/06/27 17:44:54 ed Exp $ diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 5a253c245a..4200674d70 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. ADD_SUBDIRECTORY(C) IF(BUILD_UTILITIES) diff --git a/examples/Makefile.am b/examples/Makefile.am index 52b9dd177d..58f1a88be3 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -1,16 +1,18 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. -# This is the main automake file for netCDF. It builds the different -# netcdf directories. Not all directories are built, depending on the -# options selected during configure. +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. # Build ncgen/ncdump. if BUILD_UTILITIES CDL_DIR = CDL endif -# These are the subdirectories that will be built. +# These are the subdirectories that will be built. SUBDIRS = C $(CDL_DIR) EXTRA_DIST=CMakeLists.txt diff --git a/h5_test/CMakeLists.txt b/h5_test/CMakeLists.txt index 5b51ddfd86..c6838aecbf 100644 --- a/h5_test/CMakeLists.txt +++ b/h5_test/CMakeLists.txt @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + SET(H5TESTS tst_h_files tst_h_files2 tst_h_files4 tst_h_atts tst_h_atts3 tst_h_atts4 tst_h_vars tst_h_vars2 tst_h_vars3 tst_h_grps tst_h_compounds tst_h_compounds2 tst_h_wrt_cmp tst_h_vl tst_h_opaques tst_h_strings tst_h_strings1 tst_h_strings2 tst_h_ints tst_h_dimscales tst_h_dimscales1 tst_h_dimscales2 tst_h_dimscales3 tst_h_enums tst_h_dimscales4) FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h5 ${CMAKE_CURRENT_SOURCE_DIR}/*.nc) diff --git a/h5_test/Makefile.am b/h5_test/Makefile.am index f114d7cebd..9518ab6e21 100644 --- a/h5_test/Makefile.am +++ b/h5_test/Makefile.am @@ -1,5 +1,5 @@ # This is part of the netCDF package. -# Copyright 2011 University Corporation for Atmospheric Research/Unidata +# Copyright 2018 University Corporation for Atmospheric Research/Unidata # See COPYRIGHT file for conditions of use. # # This entire directory will be skipped, unless the configure script diff --git a/h5_test/h5_err_macros.h b/h5_test/h5_err_macros.h index d2889b39da..81c729ec72 100644 --- a/h5_test/h5_err_macros.h +++ b/h5_test/h5_err_macros.h @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test HDF5 file code. These are not intended to be exhaustive tests, diff --git a/h5_test/run_par_tests.sh b/h5_test/run_par_tests.sh index ee0b8c7489..a594a208b7 100755 --- a/h5_test/run_par_tests.sh +++ b/h5_test/run_par_tests.sh @@ -1,4 +1,10 @@ #!/bin/sh +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. if test "x$srcdir" = x ; then srcdir=`pwd`; fi . ../test_common.sh diff --git a/h5_test/tst_h_atts.c b/h5_test/tst_h_atts.c index a321093816..ecefb26656 100644 --- a/h5_test/tst_h_atts.c +++ b/h5_test/tst_h_atts.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test HDF5 file code. These are not intended to be exhaustive tests, @@ -52,14 +52,14 @@ main() { float val = 99; - char emp[NUM_EMPS][MAX_LEN + 1] = {"Augustus", "Tiberius", - "Caligula", "Claudius", + char emp[NUM_EMPS][MAX_LEN + 1] = {"Augustus", "Tiberius", + "Caligula", "Claudius", "Ne_r_o", "V.esp.asi.an"}; char obj_name[MAX_LEN + 1]; int e, i; /* Open file and create group. */ - if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, + if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gcreate(fileid, EMP_GRP, 0)) < 0) ERR; @@ -69,7 +69,7 @@ main() /* Attach some zero-length float attributes! */ for (e = 0; e < NUM_EMPS; e++) { - if ((attid = H5Acreate(grpid, emp[e], H5T_NATIVE_FLOAT, spaceid, + if ((attid = H5Acreate(grpid, emp[e], H5T_NATIVE_FLOAT, spaceid, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid, H5T_NATIVE_FLOAT, &val) < 0) ERR; if (H5Aclose(attid) < 0) ERR; @@ -79,15 +79,15 @@ main() if (H5Sclose(spaceid) < 0) ERR; if (H5Gclose(grpid) < 0) ERR; if (H5Fclose(fileid) < 0) ERR; - + /* Now open the file again and read in the attributes. */ - if ((fileid = H5Fopen(FILE_NAME, H5F_ACC_RDWR, + if ((fileid = H5Fopen(FILE_NAME, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gopen(fileid, EMP_GRP)) < 0) ERR; /* How many attributes are there? */ if ((num_obj = H5Aget_num_attrs(grpid)) != NUM_EMPS) ERR; - + /* Make sure the names are in the correct order. */ for (i = 0; i < num_obj; i++) { @@ -104,7 +104,7 @@ main() printf("*** Checking HDF5 attribute deletes..."); { /* Create a file and open the root group. */ - if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, + if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gopen(fileid, "/")) < 0) ERR; @@ -112,7 +112,7 @@ main() if ((spaceid = H5Screate(H5S_SCALAR)) < 0) ERR; if ((typeid = H5Tcopy(H5T_C_S1)) < 0) ERR; if (H5Tset_size(typeid, strlen(txt) + 1) < 0) ERR; - if ((attid = H5Acreate(grpid, ATT1_NAME, typeid, spaceid, + if ((attid = H5Acreate(grpid, ATT1_NAME, typeid, spaceid, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid, typeid, txt) < 0) ERR; @@ -121,7 +121,7 @@ main() if (H5Adelete(grpid, ATT1_NAME) < 0) ERR; /* Create and write it again. */ - if ((attid = H5Acreate(grpid, ATT1_NAME, typeid, spaceid, + if ((attid = H5Acreate(grpid, ATT1_NAME, typeid, spaceid, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid, typeid, txt) < 0) ERR; @@ -137,7 +137,7 @@ main() printf("*** Checking HDF5 attributes attached to the fileid..."); { /* See if we can write an attribute to the root group. */ - if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, + if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gopen(fileid, "/")) < 0) ERR; @@ -145,7 +145,7 @@ main() if ((spaceid = H5Screate(H5S_SCALAR)) < 0) ERR; if ((typeid = H5Tcopy(H5T_C_S1)) < 0) ERR; if (H5Tset_size(typeid, strlen(txt) + 1) < 0) ERR; - if ((attid = H5Acreate(grpid, ATT1_NAME, typeid, spaceid, + if ((attid = H5Acreate(grpid, ATT1_NAME, typeid, spaceid, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid, typeid, txt) < 0) ERR; if (H5Aclose(attid) < 0 || @@ -158,15 +158,15 @@ main() printf("*** Checking HDF5 attributes in a group..."); { /* Open file and create group. */ - if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, + if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gcreate(fileid, GRP_NAME, 0)) < 0) ERR; - + /* Attach a text attribute with some of Hamlet's lines. */ if ((spaceid = H5Screate(H5S_SCALAR)) < 0) ERR; if ((typeid = H5Tcopy(H5T_C_S1)) < 0) ERR; if (H5Tset_size(typeid, strlen(txt) + 1) < 0) ERR; - if ((attid = H5Acreate(grpid, ATT1_NAME, typeid, spaceid, + if ((attid = H5Acreate(grpid, ATT1_NAME, typeid, spaceid, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid, typeid, txt) < 0) ERR; if (H5Aclose(attid) < 0 || @@ -176,7 +176,7 @@ main() H5Fclose(fileid) < 0) ERR; /* Now open the file again and read in the attribute. */ - if ((fileid = H5Fopen(FILE_NAME, H5F_ACC_RDONLY, + if ((fileid = H5Fopen(FILE_NAME, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gopen(fileid, GRP_NAME)) < 0) ERR; if ((attid = H5Aopen_name(grpid, ATT1_NAME)) < 0) ERR; @@ -221,19 +221,19 @@ main() float val = 99; /* Open file and create group. */ - if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, + if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gcreate(fileid, GRP_NAME, 0)) < 0) ERR; - + /* Attach a float attribute with no data. The * hell with Hamlet anyway! */ if ((spaceid = H5Screate(H5S_NULL)) < 0) ERR; if ((typeid = H5Tcopy(H5T_NATIVE_FLOAT)) < 0) ERR; - if ((attid = H5Acreate(grpid, ATT1_NAME, + if ((attid = H5Acreate(grpid, ATT1_NAME, typeid, spaceid, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid, H5T_NATIVE_FLOAT, &val) < 0) ERR; @@ -242,9 +242,9 @@ main() if (H5Tclose(typeid) < 0) ERR; if (H5Gclose(grpid) < 0) ERR; if (H5Fclose(fileid) < 0) ERR; - + /* Now open the file again and read in the attribute. */ - if ((fileid = H5Fopen(FILE_NAME, H5F_ACC_RDWR, + if ((fileid = H5Fopen(FILE_NAME, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gopen(fileid, GRP_NAME)) < 0) ERR; if ((attid = H5Aopen_name(grpid, ATT1_NAME)) < 0) ERR; @@ -258,7 +258,7 @@ main() if ((spaceid = H5Screate(H5S_NULL)) < 0) ERR; if ((typeid = H5Tcopy(H5T_C_S1)) < 0) ERR; if (H5Tset_size(typeid, 1) < 0) ERR; - if ((attid1 = H5Acreate(grpid, ATT2_NAME, typeid, spaceid, + if ((attid1 = H5Acreate(grpid, ATT2_NAME, typeid, spaceid, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid1, H5T_NATIVE_FLOAT, &val) < 0) ERR; if (H5Sclose(spaceid) < 0 || @@ -267,9 +267,9 @@ main() H5Tclose(typeid) < 0 || H5Gclose(grpid) < 0 || H5Fclose(fileid) < 0) ERR; - + /* Now open the file again and read in the attribute. */ - if ((fileid = H5Fopen(FILE_NAME, H5F_ACC_RDONLY, + if ((fileid = H5Fopen(FILE_NAME, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gopen(fileid, GRP_NAME)) < 0) ERR; if ((attid = H5Aopen_name(grpid, ATT2_NAME)) < 0) ERR; @@ -322,21 +322,21 @@ main() "So tell him, with th' occurrents, more and less,\n" "Which have solicited- the rest is silence."}; - char speech_name[NUM_SPEECHES][MAX_LEN + 1] = {"Act_1_Scene_2", - "Act_3_Scene_2", + char speech_name[NUM_SPEECHES][MAX_LEN + 1] = {"Act_1_Scene_2", + "Act_3_Scene_2", "Act_5_Scene_2"}; char obj_name[MAX_LEN + 1]; int i; /* Create a file and get its root group. */ - if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, + if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gopen(fileid, "/")) < 0) ERR; /* Create a dataset. */ dims[0] = DIM1_LEN; if ((var_spaceid = H5Screate_simple(1, dims, dims)) < 0) ERR; - if ((datasetid = H5Dcreate(grpid, VAR_NAME, H5T_NATIVE_HBOOL, + if ((datasetid = H5Dcreate(grpid, VAR_NAME, H5T_NATIVE_HBOOL, var_spaceid, H5P_DEFAULT)) < 0) ERR; /* Attach three text attributes with some of Hamlet's lines to @@ -347,7 +347,7 @@ main() for (i = 0; i < NUM_SPEECHES; i++) { if (H5Tset_size(typeid, strlen(speech[i]) + 1) < 0) ERR; - if ((attid = H5Acreate(datasetid, speech_name[i], typeid, spaceid, + if ((attid = H5Acreate(datasetid, speech_name[i], typeid, spaceid, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid, typeid, speech[i]) < 0) ERR; if (H5Aclose(attid) < 0) ERR; @@ -364,14 +364,14 @@ main() * attributes). */ /* Open file, group, and dataset. */ - if ((fileid = H5Fopen(FILE_NAME, H5F_ACC_RDWR, + if ((fileid = H5Fopen(FILE_NAME, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gopen(fileid, "/")) < 0) ERR; if ((datasetid = H5Dopen1(grpid, VAR_NAME)) < 0) ERR; /* How many attributes are there? */ if ((num_obj = H5Aget_num_attrs(datasetid)) != NUM_SPEECHES) ERR; - + /* Make sure the names are in the correct order. */ for (i = 0; i < num_obj; i++) { @@ -387,7 +387,7 @@ main() /* Recreate it and add the attributes again. */ if ((var_spaceid = H5Screate_simple(1, dims, dims)) < 0) ERR; - if ((datasetid = H5Dcreate(grpid, VAR_NAME, H5T_NATIVE_HBOOL, + if ((datasetid = H5Dcreate(grpid, VAR_NAME, H5T_NATIVE_HBOOL, var_spaceid, H5P_DEFAULT)) < 0) ERR; /* Attach three text attributes with some of Hamlet's lines to @@ -398,7 +398,7 @@ main() for (i = 0; i < NUM_SPEECHES; i++) { if (H5Tset_size(typeid, strlen(speech[i]) + 1) < 0) ERR; - if ((attid = H5Acreate(datasetid, speech_name[i], typeid, spaceid, + if ((attid = H5Acreate(datasetid, speech_name[i], typeid, spaceid, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid, typeid, speech[i]) < 0) ERR; if (H5Aclose(attid) < 0) ERR; @@ -406,7 +406,7 @@ main() /* How many attributes are there? */ if ((num_obj = H5Aget_num_attrs(datasetid)) != NUM_SPEECHES) ERR; - + /* Make sure the names are in the correct order. */ for (i = 0; i < num_obj; i++) { @@ -448,7 +448,7 @@ main() /* Write an attribute. */ if ((spaceid = H5Screate(H5S_SCALAR)) < 0) ERR; - if ((attid = H5Acreate2(grpid, NC3_STRICT_ATT_NAME, H5T_NATIVE_INT, + if ((attid = H5Acreate2(grpid, NC3_STRICT_ATT_NAME, H5T_NATIVE_INT, spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid, H5T_NATIVE_INT, &one) < 0) ERR; if (H5Sclose(spaceid) < 0) ERR; @@ -456,15 +456,15 @@ main() H5Fflush(hdfid, H5F_SCOPE_GLOBAL); dims[0] = 1; if ((spaceid = H5Screate_simple(1, dims, NULL)) < 0) ERR; - if ((attid1 = H5Acreate2(grpid, "l", H5T_NATIVE_INT, spaceid, + if ((attid1 = H5Acreate2(grpid, "l", H5T_NATIVE_INT, spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid1, H5T_NATIVE_INT, &one) < 0) ERR; if (H5Aclose(attid1) < 0) ERR; - if ((attid1 = H5Acreate2(grpid, "y", H5T_NATIVE_INT, spaceid, + if ((attid1 = H5Acreate2(grpid, "y", H5T_NATIVE_INT, spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid1, H5T_NATIVE_INT, &one) < 0) ERR; if (H5Aclose(attid1) < 0) ERR; - if ((attid1 = H5Acreate2(grpid, "c", H5T_NATIVE_INT, spaceid, + if ((attid1 = H5Acreate2(grpid, "c", H5T_NATIVE_INT, spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid1, H5T_NATIVE_INT, &one) < 0) ERR; if (H5Aclose(attid1) < 0) ERR; @@ -506,7 +506,7 @@ main() /* Write an attribute. */ if ((spaceid = H5Screate(H5S_SCALAR)) < 0) ERR; - if ((attid = H5Acreate(grpid, NC3_STRICT_ATT_NAME, H5T_NATIVE_INT, + if ((attid = H5Acreate(grpid, NC3_STRICT_ATT_NAME, H5T_NATIVE_INT, spaceid, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid, H5T_NATIVE_INT, &one) < 0) ERR; if (H5Sclose(spaceid) < 0) ERR; @@ -514,15 +514,15 @@ main() H5Fflush(hdfid, H5F_SCOPE_GLOBAL); dims[0] = 1; if ((spaceid = H5Screate_simple(1, dims, NULL)) < 0) ERR; - if ((attid1 = H5Acreate2(grpid, "z", H5T_NATIVE_INT, spaceid, + if ((attid1 = H5Acreate2(grpid, "z", H5T_NATIVE_INT, spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid1, H5T_NATIVE_INT, &one) < 0) ERR; if (H5Aclose(attid1) < 0) ERR; - if ((attid1 = H5Acreate2(grpid, "y", H5T_NATIVE_INT, spaceid, + if ((attid1 = H5Acreate2(grpid, "y", H5T_NATIVE_INT, spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid1, H5T_NATIVE_INT, &one) < 0) ERR; if (H5Aclose(attid1) < 0) ERR; - if ((attid1 = H5Acreate2(grpid, "c", H5T_NATIVE_INT, spaceid, + if ((attid1 = H5Acreate2(grpid, "c", H5T_NATIVE_INT, spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid1, H5T_NATIVE_INT, &one) < 0) ERR; if (H5Aclose(attid1) < 0) ERR; @@ -579,10 +579,10 @@ main() if ((dimscaleid = H5Dcreate(grpid, "D1", H5T_IEEE_F32BE, spaceid, H5P_DEFAULT)) < 0) ERR; - + /* Indicate that this is a scale. */ if (H5DSset_scale(dimscaleid, NULL) < 0) ERR; - + /* Add another attribute to the group. Call it "third". */ if ((attid = H5Acreate(grpid , att_name[2], H5T_NATIVE_UCHAR, att_spaceid, H5P_DEFAULT)) < 0) ERR; @@ -610,7 +610,7 @@ main() /* How many attributes are there? */ if ((num_obj = H5Aget_num_attrs(grpid)) != 3) ERR; - + /* Make sure the names are in the correct order. */ for (i = 0; i < num_obj; i++) { @@ -676,7 +676,7 @@ main() /* How many attributes are there? */ if ((num_obj = H5Aget_num_attrs(grpid)) != NUM_SIMPLE_ATTS) ERR; - + /* Make sure the names are in the correct order. */ for (i = 0; i < num_obj; i++) { diff --git a/h5_test/tst_h_atts3.c b/h5_test/tst_h_atts3.c index 7976821b0f..c65968c805 100644 --- a/h5_test/tst_h_atts3.c +++ b/h5_test/tst_h_atts3.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test HDF5 file code. These are not intended to be exhaustive tests, @@ -25,10 +25,10 @@ #define X_NAME "x" #define Y_NAME "y" #define S1_NAME "s1" -#define VLEN_TYPE_NAME "Magna_Carta_VLEN" +#define VLEN_TYPE_NAME "Magna_Carta_VLEN" #define S3_ATT_NAME "King_John" #define S3_TYPE_NAME "barons" -#define VL_NAME "No scutage or aid may be levied in our kingdom without its general consent" +#define VL_NAME "No scutage or aid may be levied in our kingdom without its general consent" #define ATT_LEN 1 int @@ -67,7 +67,7 @@ main() for (i = 0; i < ATT_LEN; i++) for (j = 0; j < NUM_VL; j++) { - cvc_out[i].data[j].len = i + 1; + cvc_out[i].data[j].len = i + 1; if (!(cvc_out[i].data[j].p = calloc(sizeof(struct s1), cvc_out[i].data[j].len))) ERR; for (k = 0; k < cvc_out[i].data[j].len; k++) { @@ -80,14 +80,14 @@ main() * all the timmings. */ if ((fapl_id = H5Pcreate(H5P_FILE_ACCESS)) < 0) ERR; if (H5Pset_fclose_degree(fapl_id, H5F_CLOSE_STRONG)) ERR; - if (H5Pset_cache(fapl_id, 0, chunk_cache_nelems, chunk_cache_size, + if (H5Pset_cache(fapl_id, 0, chunk_cache_nelems, chunk_cache_size, chunk_cache_preemption) < 0) ERR; - if (H5Pset_libver_bounds(fapl_id, H5F_LIBVER_LATEST, + if (H5Pset_libver_bounds(fapl_id, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) ERR; if ((fcpl_id = H5Pcreate(H5P_FILE_CREATE)) < 0) ERR; - if (H5Pset_link_creation_order(fcpl_id, (H5P_CRT_ORDER_TRACKED | + if (H5Pset_link_creation_order(fcpl_id, (H5P_CRT_ORDER_TRACKED | H5P_CRT_ORDER_INDEXED)) < 0) ERR; - if (H5Pset_attr_creation_order(fcpl_id, (H5P_CRT_ORDER_TRACKED | + if (H5Pset_attr_creation_order(fcpl_id, (H5P_CRT_ORDER_TRACKED | H5P_CRT_ORDER_INDEXED)) < 0) ERR; if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, fcpl_id, fapl_id)) < 0) ERR; if (H5Pclose(fapl_id) < 0) ERR; @@ -98,9 +98,9 @@ main() /* Create the compound type for struct s1. */ if ((s1_typeid = H5Tcreate(H5T_COMPOUND, sizeof(struct s1))) < 0) ERR; - if (H5Tinsert(s1_typeid, X_NAME, offsetof(struct s1, x), + if (H5Tinsert(s1_typeid, X_NAME, offsetof(struct s1, x), H5T_NATIVE_FLOAT) < 0) ERR; - if (H5Tinsert(s1_typeid, Y_NAME, offsetof(struct s1, y), + if (H5Tinsert(s1_typeid, Y_NAME, offsetof(struct s1, y), H5T_NATIVE_DOUBLE) < 0) ERR; if (H5Tcommit(grpid, S1_TYPE_NAME, s1_typeid) < 0) ERR; @@ -110,13 +110,13 @@ main() /* Create the struct s3 type, which contains the vlen. */ if ((s3_typeid = H5Tcreate(H5T_COMPOUND, sizeof(struct s3))) < 0) ERR; - if (H5Tinsert(s3_typeid, VL_NAME, offsetof(struct s3, data), + if (H5Tinsert(s3_typeid, VL_NAME, offsetof(struct s3, data), vlen_typeid) < 0) ERR; if (H5Tcommit(grpid, S3_TYPE_NAME, s3_typeid) < 0) ERR; /* Create an attribute of this new type. */ if ((spaceid = H5Screate_simple(1, dims, NULL)) < 0) ERR; - if ((attid = H5Acreate(grpid, S3_ATT_NAME, s3_typeid, spaceid, + if ((attid = H5Acreate(grpid, S3_ATT_NAME, s3_typeid, spaceid, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid, s3_typeid, cvc_out) < 0) ERR; @@ -127,7 +127,7 @@ main() /* Close the att. */ if (H5Aclose(attid) < 0) ERR; - + /* Close the space. */ if (H5Sclose(spaceid) < 0) ERR; @@ -156,7 +156,7 @@ main() /* Get the typeid and native typeid. */ if ((file_typeid1[i] = H5Topen2(grpid, obj_name, H5P_DEFAULT)) < 0) ERR; - if ((native_typeid1[i] = H5Tget_native_type(file_typeid1[i], + if ((native_typeid1[i] = H5Tget_native_type(file_typeid1[i], H5T_DIR_DEFAULT)) < 0) ERR; } @@ -211,42 +211,42 @@ main() * int. */ for (i = 0; i < ATT_LEN; i++) { - vc_out[i].len = i + 1; + vc_out[i].len = i + 1; if (!(vc_out[i].p = calloc(sizeof(int), vc_out[i].len))) ERR; for (k = 0; k < vc_out[i].len; k++) ((int *)vc_out[i].p)[k] = 42; } - + /* Create the HDF5 file with creation order. */ if ((fapl_id = H5Pcreate(H5P_FILE_ACCESS)) < 0) ERR; if ((fcpl_id = H5Pcreate(H5P_FILE_CREATE)) < 0) ERR; - if (H5Pset_link_creation_order(fcpl_id, (H5P_CRT_ORDER_TRACKED | + if (H5Pset_link_creation_order(fcpl_id, (H5P_CRT_ORDER_TRACKED | H5P_CRT_ORDER_INDEXED)) < 0) ERR; - if (H5Pset_attr_creation_order(fcpl_id, (H5P_CRT_ORDER_TRACKED | + if (H5Pset_attr_creation_order(fcpl_id, (H5P_CRT_ORDER_TRACKED | H5P_CRT_ORDER_INDEXED)) < 0) ERR; if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, fcpl_id, fapl_id)) < 0) ERR; if (H5Pclose(fapl_id) < 0) ERR; if (H5Pclose(fcpl_id) < 0) ERR; - + /* Open the root group. */ if ((grpid = H5Gopen2(fileid, "/", H5P_DEFAULT)) < 0) ERR; - + /* Create a vlen type. Its a vlen of int. */ if ((vlen_typeid = H5Tvlen_create(H5T_NATIVE_INT)) < 0) ERR; if (H5Tcommit(grpid, VLEN_TYPE_NAME, vlen_typeid) < 0) ERR; - + /* Create an attribute of this new type. */ if ((spaceid = H5Screate_simple(1, dims, NULL)) < 0) ERR; - if ((attid = H5Acreate(grpid, ATT_NAME, vlen_typeid, spaceid, + if ((attid = H5Acreate(grpid, ATT_NAME, vlen_typeid, spaceid, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid, vlen_typeid, vc_out) < 0) ERR; - + /* Close the type. */ if (H5Tclose(vlen_typeid) < 0) ERR; - + /* Close the att. */ if (H5Aclose(attid) < 0) ERR; - + /* Close the space. */ if (H5Sclose(spaceid) < 0) ERR; diff --git a/h5_test/tst_h_atts4.c b/h5_test/tst_h_atts4.c index 6228dd6619..e42cd171ef 100644 --- a/h5_test/tst_h_atts4.c +++ b/h5_test/tst_h_atts4.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2010 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test HDF5 file code. These are not intended to be exhaustive tests, @@ -26,10 +26,10 @@ #define X_NAME "x" #define Y_NAME "y" #define S1_NAME "s1" -#define VLEN_TYPE_NAME "Percy_Jackson_VLEN" +#define VLEN_TYPE_NAME "Percy_Jackson_VLEN" #define ATT_NAME "Poseidon" #define S3_TYPE_NAME "Olympus" -#define VL_NAME "Trident" +#define VL_NAME "Trident" #define ATT_LEN 1 int @@ -67,7 +67,7 @@ main() if (!(vc_out = calloc(sizeof(hvl_t), ATT_LEN))) ERR; for (i = 0; i < ATT_LEN; i++) { - vc_out[i].len = i + 1; + vc_out[i].len = i + 1; if (!(vc_out[i].p = calloc(sizeof(struct s1), vc_out[i].len))) ERR; for (k = 0; k < vc_out[i].len; k++) { @@ -75,50 +75,50 @@ main() ((struct s1 *)vc_out[i].p)[k].y = 2.0; } } - + /* Create the HDF5 file, with cache control, creation order, and * all the timmings. */ if ((fapl_id = H5Pcreate(H5P_FILE_ACCESS)) < 0) ERR; if (H5Pset_fclose_degree(fapl_id, H5F_CLOSE_STRONG)) ERR; - if (H5Pset_cache(fapl_id, 0, chunk_cache_nelems, chunk_cache_size, + if (H5Pset_cache(fapl_id, 0, chunk_cache_nelems, chunk_cache_size, chunk_cache_preemption) < 0) ERR; if ((fcpl_id = H5Pcreate(H5P_FILE_CREATE)) < 0) ERR; - if (H5Pset_link_creation_order(fcpl_id, (H5P_CRT_ORDER_TRACKED | + if (H5Pset_link_creation_order(fcpl_id, (H5P_CRT_ORDER_TRACKED | H5P_CRT_ORDER_INDEXED)) < 0) ERR; - if (H5Pset_attr_creation_order(fcpl_id, (H5P_CRT_ORDER_TRACKED | + if (H5Pset_attr_creation_order(fcpl_id, (H5P_CRT_ORDER_TRACKED | H5P_CRT_ORDER_INDEXED)) < 0) ERR; if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, fcpl_id, fapl_id)) < 0) ERR; if (H5Pclose(fapl_id) < 0) ERR; if (H5Pclose(fcpl_id) < 0) ERR; - + /* Open the root group. */ if ((grpid = H5Gopen2(fileid, "/", H5P_DEFAULT)) < 0) ERR; - + /* Create the compound type for struct s1. */ if ((s1_typeid = H5Tcreate(H5T_COMPOUND, sizeof(struct s1))) < 0) ERR; - if (H5Tinsert(s1_typeid, X_NAME, offsetof(struct s1, x), + if (H5Tinsert(s1_typeid, X_NAME, offsetof(struct s1, x), H5T_NATIVE_FLOAT) < 0) ERR; - if (H5Tinsert(s1_typeid, Y_NAME, offsetof(struct s1, y), + if (H5Tinsert(s1_typeid, Y_NAME, offsetof(struct s1, y), H5T_NATIVE_DOUBLE) < 0) ERR; if (H5Tcommit(grpid, S1_TYPE_NAME, s1_typeid) < 0) ERR; - + /* Create a vlen type. Its a vlen of struct s1. */ if ((vlen_typeid = H5Tvlen_create(s1_typeid)) < 0) ERR; if (H5Tcommit(grpid, VLEN_TYPE_NAME, vlen_typeid) < 0) ERR; - + /* Create an attribute of this new type. */ if ((spaceid = H5Screate_simple(1, dims, NULL)) < 0) ERR; - if ((attid = H5Acreate(grpid, ATT_NAME, vlen_typeid, spaceid, + if ((attid = H5Acreate(grpid, ATT_NAME, vlen_typeid, spaceid, H5P_DEFAULT)) < 0) ERR; if (H5Awrite(attid, vlen_typeid, vc_out) < 0) ERR; - + /* Close the types. */ if (H5Tclose(s1_typeid) < 0 || H5Tclose(vlen_typeid) < 0) ERR; - + /* Close the att. */ if (H5Aclose(attid) < 0) ERR; - + /* Close the space. */ if (H5Sclose(spaceid) < 0) ERR; diff --git a/h5_test/tst_h_compounds.c b/h5_test/tst_h_compounds.c index b14b00b55d..a38d221ad2 100644 --- a/h5_test/tst_h_compounds.c +++ b/h5_test/tst_h_compounds.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test HDF5 file code. These are not intended to be exhaustive tests, @@ -42,11 +42,11 @@ main() /* REALLY initialize the data (even the gaps in the structs). This * is only needed to pass valgrind. */ if (!(dummy = calloc(sizeof(struct s2), DIM1_LEN))) ERR; - memcpy((void *)data2, (void *)dummy, sizeof(struct s2) * DIM1_LEN); - free(dummy); + memcpy((void *)data2, (void *)dummy, sizeof(struct s2) * DIM1_LEN); + free(dummy); if (!(dummy = calloc(sizeof(struct s1), DIM1_LEN))) ERR; - memcpy((void *)data2, (void *)dummy, sizeof(struct s1) * DIM1_LEN); - free(dummy); + memcpy((void *)data2, (void *)dummy, sizeof(struct s1) * DIM1_LEN); + free(dummy); for (i=0; i diff --git a/include/nc_logging.h b/include/nc_logging.h index c4735b71f6..2ed73a43b4 100644 --- a/include/nc_logging.h +++ b/include/nc_logging.h @@ -1,4 +1,4 @@ -/* Copyright 2010, University Corporation for Atmospheric Research. See +/* Copyright 2018, University Corporation for Atmospheric Research. See COPYRIGHT file for copying and redistribution conditions. */ /** * @file @internal This file is part of netcdf-4, a netCDF-like diff --git a/include/nc_provenance.h b/include/nc_provenance.h index ef9825a3dc..7340e35ed9 100644 --- a/include/nc_provenance.h +++ b/include/nc_provenance.h @@ -1,15 +1,14 @@ -/* Copyright 2005-2018 University Corporation for Atmospheric +/* Copyright 2018-2018 University Corporation for Atmospheric Research/Unidata. */ -/** /** * @file * @internal Contains information for creating provenance * info and/or displaying provenance info. * * @author Dennis Heimbigner, Ward Fisher + */ -/**************************************************/ -/** +/* It has come to pass that we can't guarantee that this information is contained only within netcdf4 files. As a result, we need diff --git a/include/nc_tests.h b/include/nc_tests.h index bca0ec1290..8d975f66df 100644 --- a/include/nc_tests.h +++ b/include/nc_tests.h @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University * Corporation for Atmospheric Research/Unidata. See \ref copyright * file for conditions of use. */ /** @internal @file diff --git a/include/ncauth.h b/include/ncauth.h index a3087eb8f6..f18bad7201 100644 --- a/include/ncauth.h +++ b/include/ncauth.h @@ -1,6 +1,6 @@ /* -Copyright (c) 1998-2017 University Corporation for Atmospheric Research/Unidata -See LICENSE.txt for license information. +Copyright (c) 1998-2018 University Corporation for Atmospheric Research/Unidata +See COPYRIGHT for license information. */ /* diff --git a/include/ncbytes.h b/include/ncbytes.h index 824f7c70be..29feaa10e9 100644 --- a/include/ncbytes.h +++ b/include/ncbytes.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef NCBYTES_H diff --git a/include/ncconfigure.h b/include/ncconfigure.h index 0e00727bb9..57dbc2b368 100644 --- a/include/ncconfigure.h +++ b/include/ncconfigure.h @@ -1,5 +1,5 @@ /* - * Copyright 2010 University Corporation for Atmospheric + * Copyright 2018 University Corporation for Atmospheric * Research/Unidata. See COPYRIGHT file for more info. * * This header file is for the parallel I/O functions of netCDF. @@ -16,30 +16,18 @@ /* This is included in bottom -of config.h. It is where, +of config.h. It is where, typically, alternatives to missing functions should be defined and missing types defined. */ -#ifndef HAVE_STRDUP -extern char* strdup(const char*); -#endif - /* #ifndef HAVE_SSIZE_T typedef long ssize_t; #define HAVE_SSIZE_T #endif */ -/* handle null arguments */ -#ifndef nulldup -#ifdef HAVE_STRDUP -#define nulldup(s) ((s)==NULL?NULL:strdup(s)) -#else -char *nulldup(const char* s); -#endif -#endif #ifdef _MSC_VER #ifndef HAVE_SSIZE_T @@ -49,15 +37,24 @@ typedef SSIZE_T ssize_t; #endif #endif -#ifndef HAVE_STRLCAT -#ifdef _MSC_VER -/* Windows strlcat_s is equivalent to strlcat, but different arg order */ -#define strlcat(d,s,n) strcat_s((d),(n),(s)) -#else -extern size_t strlcat(char* dst, const char* src, size_t dsize); +/*Warning: Cygwin with -ansi does not define these functions + in its headers.*/ +#ifndef _WIN32 +#if __STDC__ == 1 /*supposed to be same as -ansi flag */ +extern char* strdup(const char*); +extern size_t strlcat(char*,const char*,size_t); +extern int snprintf(char*, size_t, const char*, ...); +extern int strcasecmp(const char*, const char*); +extern long long int strtoll(const char*, char**, int); +extern unsigned long long int strtoull(const char*, char**, int); #endif #endif +#ifdef _WIN32 +#define strlcat(d,s,n) strcat_s((d),(n),(s)) +#endif + +/* handle null arguments */ #ifndef nulldup #define nulldup(s) ((s)==NULL?NULL:strdup(s)) #endif diff --git a/include/ncdap.h b/include/ncdap.h index 6dac5aa9f9..40894ba612 100644 --- a/include/ncdap.h +++ b/include/ncdap.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/include/ncdimscale.h b/include/ncdimscale.h index e4e206005d..8853708ef9 100644 --- a/include/ncdimscale.h +++ b/include/ncdimscale.h @@ -1,4 +1,4 @@ -/* Copyright 2005-2018 University Corporation for Atmospheric +/* Copyright 2018-2018 University Corporation for Atmospheric Research/Unidata. */ /** * @file diff --git a/include/ncdispatch.h b/include/ncdispatch.h index ba3593e6aa..5b18be38f9 100644 --- a/include/ncdispatch.h +++ b/include/ncdispatch.h @@ -1,4 +1,4 @@ -/* Copyright 2005-2018 University Corporation for Atmospheric +/* Copyright 2018-2018 University Corporation for Atmospheric Research/Unidata. */ /** * @file @@ -108,10 +108,6 @@ typedef struct NC_MPI_INFO { /* Define known dispatch tables and initializers */ -/*Forward*/ -// typedef struct NC_Dispatch NC_Dispatch; - - extern int NCDISPATCH_initialize(void); extern int NCDISPATCH_finalize(void); diff --git a/include/ncexternl.h b/include/ncexternl.h index e3e8e52c92..3fa65a7499 100644 --- a/include/ncexternl.h +++ b/include/ncexternl.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2010, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header$ *********************************************************************/ diff --git a/include/ncfilter.h b/include/ncfilter.h index 17806e7142..3c0078463c 100644 --- a/include/ncfilter.h +++ b/include/ncfilter.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef NCFILTER_H diff --git a/include/nchashmap.h b/include/nchashmap.h index f89c4b8261..0606d6a2f5 100644 --- a/include/nchashmap.h +++ b/include/nchashmap.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header$ *********************************************************************/ diff --git a/include/ncindex.h b/include/ncindex.h index 5e83390acc..20e2895b67 100644 --- a/include/ncindex.h +++ b/include/ncindex.h @@ -1,6 +1,6 @@ /* -Copyright (c) 1998-2017 University Corporation for Atmospheric Research/Unidata -See LICENSE.txt for license information. +Copyright (c) 1998-2018 University Corporation for Atmospheric Research/Unidata +See COPYRIGHT for license information. */ #ifndef NCINDEX_H @@ -100,7 +100,7 @@ static int ncindexsize(NCindex* index) { int i; if(index == NULL) return 0; - i = nclistlength(index->list); + i = nclistlength(index->list); return i; } #else diff --git a/include/nclist.h b/include/nclist.h index a47ba401c1..73d5f225bf 100644 --- a/include/nclist.h +++ b/include/nclist.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef NCLIST_H #define NCLIST_H 1 diff --git a/include/nclog.h b/include/nclog.h index dd9fe85cea..ce4c84d14c 100644 --- a/include/nclog.h +++ b/include/nclog.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2010, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header$ *********************************************************************/ diff --git a/include/ncoffsets.h b/include/ncoffsets.h index 36381432bb..dad9a29dd5 100644 --- a/include/ncoffsets.h +++ b/include/ncoffsets.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/include/ncrc.h b/include/ncrc.h index 4998efb494..27db1cb0d1 100644 --- a/include/ncrc.h +++ b/include/ncrc.h @@ -1,6 +1,6 @@ /* -Copyright (c) 1998-2017 University Corporation for Atmospheric Research/Unidata -See LICENSE.txt for license information. +Copyright (c) 1998-2018 University Corporation for Atmospheric Research/Unidata +See COPYRIGHT for license information. */ /* diff --git a/include/nctestserver.h b/include/nctestserver.h index 175574efab..b6181f68f0 100644 --- a/include/nctestserver.h +++ b/include/nctestserver.h @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include "config.h" #include #include @@ -26,7 +37,7 @@ parseServers(const char* remotetestservers) char* p; char* svc; char** l; - + list = (char**)malloc(sizeof(char*) * (int)(strlen(remotetestservers)/2)); if(list == NULL) return NULL; rts = strdup(remotetestservers); @@ -65,29 +76,41 @@ nc_findtestserver(const char* path, int isdap4, const char* serverlist) char** svc; char url[MAXSERVERURL]; char* match = NULL; + int reportsearch; if((svclist = parseServers(serverlist))==NULL) { fprintf(stderr,"cannot parse test server list: %s\n",serverlist); return NULL; } + reportsearch = (getenv("NC_REPORTSEARCH") != NULL); for(svc=svclist;*svc;svc++) { - if(strlen(*svc) == 0) + if(strlen(*svc) == 0) goto done; if(path == NULL) path = ""; if(strlen(path) > 0 && path[0] == '/') path++; + if(reportsearch) + fprintf(stderr,"nc_findtestserver: candidate=%s/%s: found=",*svc,path); /* Try https: first */ snprintf(url,MAXSERVERURL,"https://%s/%s",*svc,path); - if(ping(url) == NC_NOERR) - {match = strdup(url); goto done;} + if(ping(url) == NC_NOERR) { + if(reportsearch) fprintf(stderr,"yes\n"); + match = strdup(url); + goto done; + } /* Try http: next */ snprintf(url,MAXSERVERURL,"http://%s/%s",*svc,path); - if(ping(url) == NC_NOERR) - {match = strdup(url); goto done;} + if(ping(url) == NC_NOERR) { + if(reportsearch) fprintf(stderr,"yes\n"); + match = strdup(url); + goto done; + } + if(reportsearch) fprintf(stderr,"no\n"); } done: + if(reportsearch) fflush(stderr); /* Free up the envv list of servers */ - if(svclist != NULL) { + if(svclist != NULL) { char** p; for(p=svclist;*p;p++) free(*p); diff --git a/include/nctime.h b/include/nctime.h index d740f9c7bc..bbab97228e 100644 --- a/include/nctime.h +++ b/include/nctime.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2008, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id: nctime.h,v 1.6 2010/03/18 19:24:26 russ Exp $ *********************************************************************/ diff --git a/include/ncuri.h b/include/ncuri.h index a60febf526..bab9cd589b 100644 --- a/include/ncuri.h +++ b/include/ncuri.h @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ diff --git a/include/ncutf8.h b/include/ncutf8.h index fca22ca140..cff2efa221 100644 --- a/include/ncutf8.h +++ b/include/ncutf8.h @@ -1,5 +1,5 @@ /* - * Copyright 2017, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ diff --git a/include/ncwinpath.h b/include/ncwinpath.h index e62368d971..e899a27d14 100644 --- a/include/ncwinpath.h +++ b/include/ncwinpath.h @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ #ifndef _NCWINIO_H_ diff --git a/include/netcdf.h b/include/netcdf.h index 96790560b7..3570cdde14 100644 --- a/include/netcdf.h +++ b/include/netcdf.h @@ -2,8 +2,9 @@ Main header file for the C API. -Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 +Copyright 2018, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 University Corporation for Atmospheric Research/Unidata. See \ref copyright file for more info. diff --git a/include/netcdf_aux.h b/include/netcdf_aux.h index ef96cc0377..5ea0c042cf 100644 --- a/include/netcdf_aux.h +++ b/include/netcdf_aux.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2010, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id$ * $Header$ diff --git a/include/netcdf_f.h b/include/netcdf_f.h index 9f064cedfb..e7bd2db6b9 100644 --- a/include/netcdf_f.h +++ b/include/netcdf_f.h @@ -1,6 +1,6 @@ /* - * Copyright 1993-2011 University Corporation for Atmospheric Research/Unidata - * + * Copyright 2018-2018 University Corporation for Atmospheric Research/Unidata + * * This header contains prototypes for functions only called by fortran 77. */ #ifndef _NETCDF_F_ @@ -19,11 +19,11 @@ EXTERNL int nc_def_var_chunking_ints(int ncid, int varid, int contiguous, int *chunksizesp); EXTERNL int -nc_open_par_fortran(const char *path, int mode, int comm, +nc_open_par_fortran(const char *path, int mode, int comm, int info, int *ncidp); EXTERNL int -nc_create_par_fortran(const char *path, int cmode, int comm, +nc_create_par_fortran(const char *path, int cmode, int comm, int info, int *ncidp); EXTERNL int @@ -33,27 +33,27 @@ EXTERNL int nc_get_chunk_cache_ints(int *sizep, int *nelemsp, int *preemptionp); EXTERNL int -nc_set_var_chunk_cache_ints(int ncid, int varid, int size, int nelems, +nc_set_var_chunk_cache_ints(int ncid, int varid, int size, int nelems, int preemption); EXTERNL int -nc_get_var_chunk_cache_ints(int ncid, int varid, int *sizep, +nc_get_var_chunk_cache_ints(int ncid, int varid, int *sizep, int *nelemsp, int *preemptionp); /* Prototypes for some extra functions in fort-lib.c. */ -EXTERNL int +EXTERNL int nc_inq_varids_f(int ncid, int *nvars, int *fvarids); -EXTERNL int +EXTERNL int nc_inq_dimids_f(int ncid, int *ndims, int *fdimids, int parent); -EXTERNL int -nc_insert_array_compound_f(int ncid, int typeid1, char *name, +EXTERNL int +nc_insert_array_compound_f(int ncid, int typeid1, char *name, size_t offset, nc_type field_typeid, int ndims, int *dim_sizesp); -EXTERNL int -nc_inq_compound_field_f(int ncid, nc_type xtype, int fieldid, char *name, - size_t *offsetp, nc_type *field_typeidp, int *ndimsp, +EXTERNL int +nc_inq_compound_field_f(int ncid, nc_type xtype, int fieldid, char *name, + size_t *offsetp, nc_type *field_typeidp, int *ndimsp, int *dim_sizesp); #if defined(__cplusplus) diff --git a/include/netcdf_mem.h b/include/netcdf_mem.h index 3024473f4f..8f7769aa9b 100644 --- a/include/netcdf_mem.h +++ b/include/netcdf_mem.h @@ -2,7 +2,7 @@ * * Main header file for in-memory (diskless) functionality. * - * Copyright 2010 University Corporation for Atmospheric + * Copyright 2018 University Corporation for Atmospheric * Research/Unidata. See COPYRIGHT file for more info. * * See \ref copyright file for more info. diff --git a/include/netcdf_meta.h.in b/include/netcdf_meta.h.in index e3859aef36..f9b9604560 100644 --- a/include/netcdf_meta.h.in +++ b/include/netcdf_meta.h.in @@ -13,8 +13,10 @@ * in conditionals. * * Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - * 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 + * 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, + * 2015, 2016, 2017, 2018 * University Corporation for Atmospheric Research/Unidata. + * * See \ref copyright file for more info. */ diff --git a/include/netcdf_par.h b/include/netcdf_par.h index f35365b997..13da607bdc 100644 --- a/include/netcdf_par.h +++ b/include/netcdf_par.h @@ -2,7 +2,7 @@ * * Main header file for the Parallel C API. * - * Copyright 2010 University Corporation for Atmospheric + * Copyright 2018 University Corporation for Atmospheric * Research/Unidata. See COPYRIGHT file for more info. * * This header file is for the parallel I/O functions of netCDF. diff --git a/include/onstack.h b/include/onstack.h index 29d84d8c44..bd3b8e39e9 100644 --- a/include/onstack.h +++ b/include/onstack.h @@ -1,5 +1,5 @@ /* - * Copyright 1997, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ /* $Id: onstack.h,v 2.7 2006/09/15 20:40:39 ed Exp $ */ diff --git a/include/rnd.h b/include/rnd.h index 90da7d2a14..d06b0e0f91 100644 --- a/include/rnd.h +++ b/include/rnd.h @@ -1,4 +1,4 @@ -/* Copyright 1996-2018, University Corporation for Atmospheric +/* Copyright 2018-2018, University Corporation for Atmospheric * Research See netcdf/COPYRIGHT file for copying and redistribution * conditions. * diff --git a/lib_flags.am b/lib_flags.am index 58accdf60f..72f45e5978 100644 --- a/lib_flags.am +++ b/lib_flags.am @@ -1,20 +1,16 @@ # This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata +# Copyright 2018 University Corporation for Atmospheric Research/Unidata # See COPYRIGHT file for conditions of use. -# +# # Assemble the CPPFLAGS and LDFLAGS that point to all the needed # libraries for netCDF-4. # -AM_CPPFLAGS = -I$(top_srcdir)/include -AM_LDFLAGS = +AM_CPPFLAGS = -I$(top_srcdir)/include +AM_LDFLAGS = if USE_DAP AM_CPPFLAGS += -I${top_srcdir}/oc2 endif -AM_TESTS_ENVIRONMENT = export TOPSRCDIR=${abs_top_srcdir}; export TOPBUILDDIR=${abs_top_builddir}; - - - - +AM_TESTS_ENVIRONMENT = export TOPSRCDIR=${abs_top_srcdir}; export TOPBUILDDIR=${abs_top_builddir}; diff --git a/libdap2/CMakeLists.txt b/libdap2/CMakeLists.txt index a5bfb1023e..126385c97b 100644 --- a/libdap2/CMakeLists.txt +++ b/libdap2/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. SET(dap2_SOURCES constraints.c dapcvt.c dapodom.c daputil.c ncdaperr.c cdf.c cache.c dapdump.c dapdebug.c dapattr.c ncd2dispatch.c getvara.c dceconstraints.c dcetab.c dceparse.c dcelex.c) add_library(dap2 OBJECT ${dap2_SOURCES}) diff --git a/libdap2/Makefile.am b/libdap2/Makefile.am index 01bf244c17..765a2f2fcc 100644 --- a/libdap2/Makefile.am +++ b/libdap2/Makefile.am @@ -1,5 +1,5 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. +# Copyright 2018, see the COPYRIGHT file for more information. # This automake file generates the Makefile to libdap2. Whatever that # is! diff --git a/libdap2/cache.c b/libdap2/cache.c index 61b44f70ab..b058700580 100644 --- a/libdap2/cache.c +++ b/libdap2/cache.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/cdf.c b/libdap2/cdf.c index c213cad529..e22e2c209b 100644 --- a/libdap2/cdf.c +++ b/libdap2/cdf.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/common.c b/libdap2/common.c index cf366c1960..1bfb2c4e8d 100644 --- a/libdap2/common.c +++ b/libdap2/common.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/constraints.c b/libdap2/constraints.c index 0be99dd07d..52976f6424 100644 --- a/libdap2/constraints.c +++ b/libdap2/constraints.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT filey for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/constraints.h b/libdap2/constraints.h index 2231b432d1..0bb2df32cb 100644 --- a/libdap2/constraints.h +++ b/libdap2/constraints.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ #ifndef CONSTRAINTS_H diff --git a/libdap2/dapattr.c b/libdap2/dapattr.c index f491cf9ca9..03a31e9391 100644 --- a/libdap2/dapattr.c +++ b/libdap2/dapattr.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/dapcvt.c b/libdap2/dapcvt.c index 2e4009af0e..c4dc3bc7b4 100644 --- a/libdap2/dapcvt.c +++ b/libdap2/dapcvt.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ #include "config.h" diff --git a/libdap2/dapdebug.c b/libdap2/dapdebug.c index e9b504f151..2c7856d3ef 100644 --- a/libdap2/dapdebug.c +++ b/libdap2/dapdebug.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ #include "config.h" diff --git a/libdap2/dapdebug.h b/libdap2/dapdebug.h index dde23e53de..55ff86cad2 100644 --- a/libdap2/dapdebug.h +++ b/libdap2/dapdebug.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ #ifndef DEBUG_H diff --git a/libdap2/dapdump.c b/libdap2/dapdump.c index a457862c0d..4f65a2bc17 100644 --- a/libdap2/dapdump.c +++ b/libdap2/dapdump.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/dapdump.h b/libdap2/dapdump.h index c5488a45f8..17d631d7a8 100644 --- a/libdap2/dapdump.h +++ b/libdap2/dapdump.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ #ifndef DUMP_H diff --git a/libdap2/dapincludes.h b/libdap2/dapincludes.h index c8b02bd9ee..6275b662b9 100644 --- a/libdap2/dapincludes.h +++ b/libdap2/dapincludes.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ #ifndef DAPINCLUDES_H diff --git a/libdap2/dapnc.h b/libdap2/dapnc.h index afac5f09ae..bc99fe8f48 100644 --- a/libdap2/dapnc.h +++ b/libdap2/dapnc.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ #ifndef DAPNC_H diff --git a/libdap2/dapodom.c b/libdap2/dapodom.c index 965f335e21..ce5cc7cb1f 100644 --- a/libdap2/dapodom.c +++ b/libdap2/dapodom.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/dapodom.h b/libdap2/dapodom.h index 8e79c1743a..8093ef09eb 100644 --- a/libdap2/dapodom.h +++ b/libdap2/dapodom.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/daputil.c b/libdap2/daputil.c index bef69c2029..d2348c0e0e 100644 --- a/libdap2/daputil.c +++ b/libdap2/daputil.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/daputil.h b/libdap2/daputil.h index 816b063d86..836e064176 100644 --- a/libdap2/daputil.h +++ b/libdap2/daputil.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ #ifndef DAPUTIL_H diff --git a/libdap2/dce.y b/libdap2/dce.y index e7030a4c53..b0e30c6297 100644 --- a/libdap2/dce.y +++ b/libdap2/dce.y @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ /*The lines down to DO NOT DELETE ... comment are specific to the C Parser. @@ -82,7 +82,7 @@ segment: {$$=segment(parsestate,$1,$2);} ; -rangelist: +rangelist: range {$$=rangelist(parsestate,null,$1);} | rangelist range diff --git a/libdap2/dceconstraints.c b/libdap2/dceconstraints.c index 2e5a851655..754e289f8e 100644 --- a/libdap2/dceconstraints.c +++ b/libdap2/dceconstraints.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/dceconstraints.h b/libdap2/dceconstraints.h index f4fa22a0fd..1b6c2975ba 100644 --- a/libdap2/dceconstraints.h +++ b/libdap2/dceconstraints.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/dcelex.c b/libdap2/dcelex.c index c6153711a0..58f39ad0c6 100644 --- a/libdap2/dcelex.c +++ b/libdap2/dcelex.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #define URLDECODE diff --git a/libdap2/dceparse.c b/libdap2/dceparse.c index c356a7d286..02239b889b 100644 --- a/libdap2/dceparse.c +++ b/libdap2/dceparse.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ /* Parser actions for constraint expressions */ diff --git a/libdap2/dceparselex.h b/libdap2/dceparselex.h index 88bc9ae80e..4b1ff9ad28 100644 --- a/libdap2/dceparselex.h +++ b/libdap2/dceparselex.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef DCEPARSELEX_H diff --git a/libdap2/getvara.c b/libdap2/getvara.c index a2c0283c29..b425685671 100644 --- a/libdap2/getvara.c +++ b/libdap2/getvara.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribuution conditions. *********************************************************************/ diff --git a/libdap2/getvara.h b/libdap2/getvara.h index 1b9b1238fc..c22b034870 100644 --- a/libdap2/getvara.h +++ b/libdap2/getvara.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ #ifndef GETVARA_H diff --git a/libdap2/main.c b/libdap2/main.c index 8111ebad64..cb001f112a 100644 --- a/libdap2/main.c +++ b/libdap2/main.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/nccommon.h b/libdap2/nccommon.h index e3bbdedd55..4b9b734fe4 100644 --- a/libdap2/nccommon.h +++ b/libdap2/nccommon.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/ncd2dispatch.c b/libdap2/ncd2dispatch.c index d9f2dd2249..6bc51100b3 100644 --- a/libdap2/ncd2dispatch.c +++ b/libdap2/ncd2dispatch.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/ncd2dispatch.h b/libdap2/ncd2dispatch.h index fd6731d227..af97bf1e29 100644 --- a/libdap2/ncd2dispatch.h +++ b/libdap2/ncd2dispatch.h @@ -1,5 +1,5 @@ /* - * Copyright 1993-1996 University Corporation for Atmospheric Research/Unidata + * Copyright 1993-2018 University Corporation for Atmospheric Research/Unidata * * Portions of this software were developed by the Unidata Program at the * University Corporation for Atmospheric Research. @@ -274,7 +274,7 @@ NCD2_def_var_fill(int, int, int, const void *); extern int NCD2_get_var_chunk_cache(int, int, size_t *, size_t *, float *); -#endif //USE_NETCDF4 +#endif /*USE_NETCDF4*/ #if defined(__cplusplus) } diff --git a/libdap2/ncdap.c b/libdap2/ncdap.c index 62aaea4547..d4aeb18a8b 100644 --- a/libdap2/ncdap.c +++ b/libdap2/ncdap.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/ncdapa.c b/libdap2/ncdapa.c index 12a912a847..0aa5580fc3 100644 --- a/libdap2/ncdapa.c +++ b/libdap2/ncdapa.c @@ -1,5 +1,5 @@ /********************************************************************* \ - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/ncdaperr.c b/libdap2/ncdaperr.c index 1833280c2b..c616e3891f 100644 --- a/libdap2/ncdaperr.c +++ b/libdap2/ncdaperr.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap2/test_vara.c b/libdap2/test_vara.c index a2c9e87151..d45cc4a53f 100644 --- a/libdap2/test_vara.c +++ b/libdap2/test_vara.c @@ -1,3 +1,15 @@ + +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include "config.h" #include #include @@ -7,7 +19,7 @@ #define DTSTEST "/dts/test.06" -/* The DDS in netcdf classic form is as follows: +/* The DDS in netcdf classic form is as follows: netcdf test { dimensions: t = 10 ; @@ -41,7 +53,7 @@ netcdf test { /* Setup an odometer */ typedef struct Odom { int rank; - size_t* index; + size_t* index; size_t* stop; size_t* start; size_t* count; @@ -81,7 +93,7 @@ main() size_t count[RANK]; char URL[4096]; const char* svc = NULL; - + /* Find Test Server */ svc = nc_findtestserver("dts",0); if(svc == NULL) { @@ -181,7 +193,7 @@ static void odom_reclaim(Odom* odom) } -static void odom_set(Odom* odom, size_t* start, size_t* count) +static void odom_set(Odom* odom, size_t* start, size_t* count) { int i; /* Init the odometer */ @@ -203,7 +215,7 @@ static int odom_more(Odom* odom) static int odom_incr(Odom* odom) { int i; /* do not make unsigned */ - if(odom->rank == 0) return 0; + if(odom->rank == 0) return 0; for(i=odom->rank-1;i>=0;i--) { odom->index[i]++; if(odom->index[i] < odom->stop[i]) break; @@ -221,364 +233,364 @@ static size_t odom_count(Odom* odom) for(i=0;irank;i++) { offset *= odom->count[i]; offset += odom->index[i]; - } + } return offset; } static float target_data[X][Y][Z] = { - 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, + 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, + 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994, - 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, - 0.990215996212637, 0.988771077936042, 0.987227283375627, + 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, + 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, 0.983843692788121, 0.98200423511727, - 0.980066577841242, 0.978030914724148, 0.975897449330606, 0.973666395005375, - 0.97133797485203, 0.968912421710645, 0.966389978134513, + 0.980066577841242, 0.978030914724148, 0.975897449330606, 0.973666395005375, + 0.97133797485203, 0.968912421710645, 0.966389978134513, 0.963770896365891, 0.961055438310771, 0.958243875512697, - 0.955336489125606, 0.952333569885713, 0.949235418082441, 0.946042343528387, - 0.942754665528346, 0.939372712847379, 0.935896823677935, + 0.955336489125606, 0.952333569885713, 0.949235418082441, 0.946042343528387, + 0.942754665528346, 0.939372712847379, 0.935896823677935, 0.932327345606034, 0.92866463557651, 0.924909059857313, - 0.921060994002885, 0.917120822816605, 0.913088940312308, 0.908965749674885, - 0.904751663219963, 0.900447102352677, 0.896052497525525, + 0.921060994002885, 0.917120822816605, 0.913088940312308, 0.908965749674885, + 0.904751663219963, 0.900447102352677, 0.896052497525525, 0.891568288195329, 0.886994922779284, 0.882332858610121, - 0.877582561890373, 0.872744507645751, 0.86781917967765, 0.862807070514761, - 0.857708681363824, 0.852524522059506, 0.847255111013416, + 0.877582561890373, 0.872744507645751, 0.86781917967765, 0.862807070514761, + 0.857708681363824, 0.852524522059506, 0.847255111013416, 0.841900975162269, 0.836462649915187, 0.830940679100164, - 0.825335614909678, 0.819648017845479, 0.813878456662534, 0.808027508312152, - 0.802095757884293, 0.796083798549056, 0.789992231497365, + 0.825335614909678, 0.819648017845479, 0.813878456662534, 0.808027508312152, + 0.802095757884293, 0.796083798549056, 0.789992231497365, 0.783821665880849, 0.777572718750928, 0.771246014997107, - 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, - 0.738468558729588, 0.731688868873821, 0.724836010740905, + 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, + 0.738468558729588, 0.731688868873821, 0.724836010740905, 0.717910669610943, 0.710913538012277, 0.703845315652236, - 0.696706709347165, 0.689498432951747, 0.682221207287614, 0.674875760071267, - 0.667462825841308, 0.659983145884982, 0.652437468164052, + 0.696706709347165, 0.689498432951747, 0.682221207287614, 0.674875760071267, + 0.667462825841308, 0.659983145884982, 0.652437468164052, 0.644826547240001, 0.63715114419858, 0.629412026573697, - 0.621609968270664, 0.613745749488812, 0.605820156643463, 0.597833982287298, - 0.589788025031098, 0.581683089463883, 0.573519986072457, + 0.621609968270664, 0.613745749488812, 0.605820156643463, 0.597833982287298, + 0.589788025031098, 0.581683089463883, 0.573519986072457, 0.565299531160354, 0.557022546766217, 0.548689860581588, - 0.54030230586814, 0.531860721374355, 0.52336595125165, 0.514818844969955, - 0.506220257232778, 0.497571047891727, 0.488872081860527, + 0.54030230586814, 0.531860721374355, 0.52336595125165, 0.514818844969955, + 0.506220257232778, 0.497571047891727, 0.488872081860527, 0.480124229028534, 0.47132836417374, 0.462485366875301, - 0.453596121425577, 0.444661516741707, 0.435682446276712, 0.426659807930157, - 0.417594503958358, 0.408487440884157, 0.399339529406273, + 0.453596121425577, 0.444661516741707, 0.435682446276712, 0.426659807930157, + 0.417594503958358, 0.408487440884157, 0.399339529406273, 0.39015168430823, 0.380924824366882, 0.371659872260533, - 0.362357754476674, 0.35301940121933, 0.343645746316047, 0.334237727124503, - 0.324796284438776, 0.315322362395269, 0.305816908378289, + 0.362357754476674, 0.35301940121933, 0.343645746316047, 0.334237727124503, + 0.324796284438776, 0.315322362395269, 0.305816908378289, 0.296280872925319, 0.286715209631956, 0.277120875056558, - 0.267498828624587, 0.25785003253267, 0.248175451652373, 0.238476053433723, - 0.228752807808459, 0.219006687093041, 0.209238665891419, + 0.267498828624587, 0.25785003253267, 0.248175451652373, 0.238476053433723, + 0.228752807808459, 0.219006687093041, 0.209238665891419, 0.199449720997573, 0.189640831297834, 0.179812977673, - 0.169967142900241, 0.160104311554831, 0.150225469911686, 0.140331605846737, - 0.130423708738146, 0.120502769367367, 0.11056977982007, + 0.169967142900241, 0.160104311554831, 0.150225469911686, 0.140331605846737, + 0.130423708738146, 0.120502769367367, 0.11056977982007, 0.100625733386932, 0.0906716244643097, 0.0807084484548006, - 0.0707372016677029, 0.0607588812193859, 0.0507744849335792, - 0.040785011241591, 0.0307914590824661, 0.0207948278030924, - 0.0107961170582674, 0.000796326710733263, -0.00920354326880834, + 0.0707372016677029, 0.0607588812193859, 0.0507744849335792, + 0.040785011241591, 0.0307914590824661, 0.0207948278030924, + 0.0107961170582674, 0.000796326710733263, -0.00920354326880834, -0.0192024929016926, - -0.0291995223012888, -0.0391936317729877, -0.0491838219141706, - -0.0591690937141481, -0.0691484486540619, -0.0791208888067339, - -0.089085416936459, -0.099041036598728, -0.108986752239871, + -0.0291995223012888, -0.0391936317729877, -0.0491838219141706, + -0.0591690937141481, -0.0691484486540619, -0.0791208888067339, + -0.089085416936459, -0.099041036598728, -0.108986752239871, -0.118921569296612, - -0.128844494295525, -0.138754534952378, -0.148650700271364, - -0.158532000644198, -0.168397447949077, -0.178246055649492, - -0.18807683889288, -0.197888814609109, -0.207681001608784, + -0.128844494295525, -0.138754534952378, -0.148650700271364, + -0.158532000644198, -0.168397447949077, -0.178246055649492, + -0.18807683889288, -0.197888814609109, -0.207681001608784, -0.217452420681365, - -0.227202094693087, -0.236929048684675, -0.246632309968834, - -0.256310908227523, -0.26596387560898, -0.275590246824513, - -0.285189059245021, -0.294759352997261, -0.304300171059833, + -0.227202094693087, -0.236929048684675, -0.246632309968834, + -0.256310908227523, -0.26596387560898, -0.275590246824513, + -0.285189059245021, -0.294759352997261, -0.304300171059833, -0.313810559358882, - -0.323289566863503, -0.332736245680845, -0.342149651150898, - -0.35152884194096, -0.360872880139767, -0.370180831351287, - -0.379451764788155, -0.388684753364752, -0.397878873789916, + -0.323289566863503, -0.332736245680845, -0.342149651150898, + -0.35152884194096, -0.360872880139767, -0.370180831351287, + -0.379451764788155, -0.388684753364752, -0.397878873789916, -0.407033206659266, - -0.416146836547142, -0.425218852098152, -0.4342483461183, - -0.443234415665709, -0.452176162140912, -0.461072691376713, - -0.469923113727602, -0.47872654415872, -0.487482102334359, + -0.416146836547142, -0.425218852098152, -0.4342483461183, + -0.443234415665709, -0.452176162140912, -0.461072691376713, + -0.469923113727602, -0.47872654415872, -0.487482102334359, -0.496188912705999, - -0.504846104599858, -0.513452812303959, -0.522008175154707, - -0.530511337622945, -0.538961449399512, -0.547357665480271, - -0.555699146250613, -0.56398505756941, -0.572214570852437, + -0.504846104599858, -0.513452812303959, -0.522008175154707, + -0.530511337622945, -0.538961449399512, -0.547357665480271, + -0.555699146250613, -0.56398505756941, -0.572214570852437, -0.580386863155222, - -0.588501117255346, -0.59655652173416, -0.60455227105793, - -0.612487565658385, -0.62036161201268, -0.628173622722739, - -0.635922816594002, -0.643608418713541, -0.651229660527546, + -0.588501117255346, -0.59655652173416, -0.60455227105793, + -0.612487565658385, -0.62036161201268, -0.628173622722739, + -0.635922816594002, -0.643608418713541, -0.651229660527546, -0.658785779918188, - -0.666276021279824, -0.673699635594561, -0.681055880507152, - -0.688344020399238, -0.695563326462902, -0.702713076773554, - -0.70979255636212, -0.716801057286543, -0.723737878702569, + -0.666276021279824, -0.673699635594561, -0.681055880507152, + -0.688344020399238, -0.695563326462902, -0.702713076773554, + -0.70979255636212, -0.716801057286543, -0.723737878702569, -0.730602326933837, - -0.737393715541245, -0.744111365391593, -0.750754604725491, - -0.757322769224544, -0.763815202077774, -0.770231254047307, - -0.776570283533293, -0.782831656638065, -0.789014747229531, + -0.737393715541245, -0.744111365391593, -0.750754604725491, + -0.757322769224544, -0.763815202077774, -0.770231254047307, + -0.776570283533293, -0.782831656638065, -0.789014747229531, -0.795118937003784, - -0.801143615546934, -0.807088180396146, -0.81295203709989, - -0.818734599277382, -0.824435288677222, -0.830053535235222, - -0.835588777131408, -0.841040460846201, -0.846408041215776, + -0.801143615546934, -0.807088180396146, -0.81295203709989, + -0.818734599277382, -0.824435288677222, -0.830053535235222, + -0.835588777131408, -0.841040460846201, -0.846408041215776, -0.851690981486566, - -0.856888753368947, -0.862000837090063, -0.867026721445802, - -0.871965903851917, -0.876817890394281, -0.881582195878286, - -0.886258343877352, -0.890845866780576, -0.895344305839492, + -0.856888753368947, -0.862000837090063, -0.867026721445802, + -0.871965903851917, -0.876817890394281, -0.881582195878286, + -0.886258343877352, -0.890845866780576, -0.895344305839492, -0.899753211213941, - -0.904072142017061, -0.90830066635937, -0.912438361391958, - -0.916484813348769, -0.920439617587981, -0.924302378632464, - -0.928072710209333, -0.931750235288572, -0.935334586120739, + -0.904072142017061, -0.90830066635937, -0.912438361391958, + -0.916484813348769, -0.920439617587981, -0.924302378632464, + -0.928072710209333, -0.931750235288572, -0.935334586120739, -0.938825404273736, - -0.942222340668658, -0.945525055614696, -0.948733218843107, - -0.951846509540242, -0.954864616379626, -0.95778723755309, - -0.960614080800952, -0.963344863441243, -0.965979312397975, + -0.942222340668658, -0.945525055614696, -0.948733218843107, + -0.951846509540242, -0.954864616379626, -0.95778723755309, + -0.960614080800952, -0.963344863441243, -0.965979312397975, -0.968517164228447, - -0.970958165149591, -0.973302071063349, -0.975548647581083, - -0.977697670047013, -0.979748923560684, -0.981702202998454, - -0.983557313034006, -0.985314068157884, -0.986972292696038, + -0.970958165149591, -0.973302071063349, -0.975548647581083, + -0.977697670047013, -0.979748923560684, -0.981702202998454, + -0.983557313034006, -0.985314068157884, -0.986972292696038, -0.988531820827396, - -0.989992496600445, -0.991354173948826, -0.992616716705937, - -0.993779998618556, -0.994843903359459, -0.995808324539061, - -0.996673165716047, -0.997438340407019, -0.998103772095146, + -0.989992496600445, -0.991354173948826, -0.992616716705937, + -0.993779998618556, -0.994843903359459, -0.995808324539061, + -0.996673165716047, -0.997438340407019, -0.998103772095146, -0.998669394237814, - -0.999135150273279, -0.999500993626328, -0.999766887712928, - -0.999932805943894, -0.99999873172754, -0.999964658471342, - -0.999830589582598, -0.999596538468086, -0.999262528532721, + -0.999135150273279, -0.999500993626328, -0.999766887712928, + -0.999932805943894, -0.99999873172754, -0.999964658471342, + -0.999830589582598, -0.999596538468086, -0.999262528532721, -0.998828593177219, - -0.998294775794753, -0.997661129766618, -0.996927718456887, - -0.996094615206081, -0.99516190332383, -0.994129676080546, - -0.992998036698093, -0.991767098339465, -0.990436984097473, + -0.998294775794753, -0.997661129766618, -0.996927718456887, + -0.996094615206081, -0.99516190332383, -0.994129676080546, + -0.992998036698093, -0.991767098339465, -0.990436984097473, -0.989007826982433, - -0.987479769908865, -0.985852965681203, -0.984127576978514, - -0.982303776338232, -0.980381746138899, -0.978361678581934, - -0.97624377567241, -0.974028249198852, -0.971715320712062, + -0.987479769908865, -0.985852965681203, -0.984127576978514, + -0.982303776338232, -0.980381746138899, -0.978361678581934, + -0.97624377567241, -0.974028249198852, -0.971715320712062, -0.969305221502961, - -0.966798192579461, -0.964194484642366, -0.961494358060299, - -0.958698082843669, -0.955805938617666, -0.952818214594305, - -0.949735209543496, -0.946557231763177, -0.943284599048476, + -0.966798192579461, -0.964194484642366, -0.961494358060299, + -0.958698082843669, -0.955805938617666, -0.952818214594305, + -0.949735209543496, -0.946557231763177, -0.943284599048476, -0.939917638659938, - -0.936456687290796, -0.932902091033304, -0.929254205344123, - -0.925513395008784, -0.921680034105203, -0.917754505966276, - -0.913737203141545, -0.909628527357945, -0.90542888947963, + -0.936456687290796, -0.932902091033304, -0.929254205344123, + -0.925513395008784, -0.921680034105203, -0.917754505966276, + -0.913737203141545, -0.909628527357945, -0.90542888947963, -0.901138709466889, - -0.896758416334147, -0.892288448107068, -0.88772925177875, - -0.883081283265026, -0.878345007358874, -0.873520897683938, - -0.868609436647165, -0.863611115390566, -0.858526433742102, + -0.896758416334147, -0.892288448107068, -0.88772925177875, + -0.883081283265026, -0.878345007358874, -0.873520897683938, + -0.868609436647165, -0.863611115390566, -0.858526433742102, -0.8533559001657, - -0.848100031710408, -0.842759353958694, -0.83733440097388, - -0.831825715246746, -0.826233847641272, -0.820559357339561, - -0.814802811785913, -0.808964786630086, -0.803045865669731, + -0.848100031710408, -0.842759353958694, -0.83733440097388, + -0.831825715246746, -0.826233847641272, -0.820559357339561, + -0.814802811785913, -0.808964786630086, -0.803045865669731, -0.797046640792012, - -0.790967711914417, -0.784809686924768, -0.778573181620433, - -0.772258819646744, -0.765867232434637, -0.759399059137508, - -0.752854946567295, -0.746235549129803, -0.739541528759258, + -0.790967711914417, -0.784809686924768, -0.778573181620433, + -0.772258819646744, -0.765867232434637, -0.759399059137508, + -0.752854946567295, -0.746235549129803, -0.739541528759258, -0.73277355485212, - -0.72593230420014, -0.719018460922681, -0.71203271639831, - -0.704975769195658, -0.697848325003564, -0.690651096560507, - -0.683384803583336, -0.676050172695292, -0.668647937353351, + -0.72593230420014, -0.719018460922681, -0.71203271639831, + -0.704975769195658, -0.697848325003564, -0.690651096560507, + -0.683384803583336, -0.676050172695292, -0.668647937353351, -0.66117883777488, - -0.653643620863612, -0.646043040134959, -0.63837785564066, - -0.630648833892775, -0.622856747787041, -0.615002376525574, - -0.607086505538955, -0.599109926407685, -0.591073436783031, + -0.653643620863612, -0.646043040134959, -0.63837785564066, + -0.630648833892775, -0.622856747787041, -0.615002376525574, + -0.607086505538955, -0.599109926407685, -0.591073436783031, -0.582977840307259, - -0.574823946533269, -0.566612570843644, -0.55834453436911, - -0.550020663906425, -0.541641791835699, -0.533208756037154, - -0.524722399807346, -0.516183571774825, -0.507593125815277, + -0.574823946533269, -0.566612570843644, -0.55834453436911, + -0.550020663906425, -0.541641791835699, -0.533208756037154, + -0.524722399807346, -0.516183571774825, -0.507593125815277, -0.49895192096614, - -0.490260821340699, -0.481520696041674, -0.47273241907431, - -0.46389686925898, -0.455014930143305, -0.446087489913793, - -0.437115441307028, -0.428099681520394, -0.419041112122356, + -0.490260821340699, -0.481520696041674, -0.47273241907431, + -0.46389686925898, -0.455014930143305, -0.446087489913793, + -0.437115441307028, -0.428099681520394, -0.419041112122356, -0.409940638962306, - -0.400799172079975, -0.391617625614436, -0.38239691771268, - -0.373137970437818, -0.363841709676858, -0.354509065048132, - -0.345140969808323, -0.335738360759151, -0.326302178153684, + -0.400799172079975, -0.391617625614436, -0.38239691771268, + -0.373137970437818, -0.363841709676858, -0.354509065048132, + -0.345140969808323, -0.335738360759151, -0.326302178153684, -0.316833365602319, - -0.307332869978419, -0.297801641323633, -0.288240632752882, - -0.278650800359055, -0.269033103117399, -0.259388502789626, - -0.249717963827731, -0.24002245327755, -0.230302940682059, + -0.307332869978419, -0.297801641323633, -0.288240632752882, + -0.278650800359055, -0.269033103117399, -0.259388502789626, + -0.249717963827731, -0.24002245327755, -0.230302940682059, -0.220560397984419, - -0.21079579943078, -0.20101012147286, -0.191204342670302, - -0.181379443592811, -0.171536406722112, -0.161676216353687, - -0.151799858498356, -0.141908320783673, -0.13200259235517, + -0.21079579943078, -0.20101012147286, -0.191204342670302, + -0.181379443592811, -0.171536406722112, -0.161676216353687, + -0.151799858498356, -0.141908320783673, -0.13200259235517, -0.122083663777433, - -0.112152526935055, -0.102210174933442, -0.0922576019995117, - -0.0822958033822624, -0.0723257752532545, -0.0623485146069917, - -0.0523650191612259, -0.0423762872571815, -0.0323833177597247, + -0.112152526935055, -0.102210174933442, -0.0922576019995117, + -0.0822958033822624, -0.0723257752532545, -0.0623485146069917, + -0.0523650191612259, -0.0423762872571815, -0.0323833177597247, -0.0223871099574771, - -0.0123886634628906, -0.00238897811228154, 0.0076109461341479, - 0.0176101092923073, 0.0276075114542115, 0.0376021528879766, - 0.0475930341377878, 0.057579156123846, 0.0675595202422752, + -0.0123886634628906, -0.00238897811228154, 0.0076109461341479, + 0.0176101092923073, 0.0276075114542115, 0.0376021528879766, + 0.0475930341377878, 0.057579156123846, 0.0675595202422752, 0.0775331284649787, - 0.0874989834394464, 0.0974560885884857, 0.10740344820988, - 0.117340067575955, 0.127264953033056, 0.137177112100907, + 0.0874989834394464, 0.0974560885884857, 0.10740344820988, + 0.117340067575955, 0.127264953033056, 0.137177112100907, 0.147075553571863, 0.156959287610023, 0.166827325850222, 0.176678681496857, - 0.186512369422576, 0.196327406266778, 0.206122810533958, 0.215897602691854, - 0.225650805269396, 0.235381442954451, 0.245088542691362, + 0.186512369422576, 0.196327406266778, 0.206122810533958, 0.215897602691854, + 0.225650805269396, 0.235381442954451, 0.245088542691362, 0.254771133778243, 0.264428247964056, 0.274058919545427, - 0.283662185463226, 0.293237085398863, 0.302782661870324, 0.312297960327916, - 0.321782029249722, 0.331233920236754, 0.340652688107789, + 0.283662185463226, 0.293237085398863, 0.302782661870324, 0.312297960327916, + 0.321782029249722, 0.331233920236754, 0.340652688107789, 0.350037390993891, 0.35938709043259, 0.368700851461733, - 0.37797774271298, 0.387216836504937, 0.396417208935922, 0.405577939976361, - 0.414698113560782, 0.423776817679428, 0.432813144469452, + 0.37797774271298, 0.387216836504937, 0.396417208935922, 0.405577939976361, + 0.414698113560782, 0.423776817679428, 0.432813144469452, 0.441806190305705, 0.450755055891099, 0.459658846346532, - 0.468516671300377, 0.477327644977522, 0.48609088628794, 0.494805518914805, - 0.503470671402114, 0.512085477241841, 0.520649074960579, + 0.468516671300377, 0.477327644977522, 0.48609088628794, 0.494805518914805, + 0.503470671402114, 0.512085477241841, 0.520649074960579, 0.529160608205695, 0.537619225830956, 0.546024081981648, - 0.554374336179161, 0.562669153405032, 0.570907704184454, 0.57908916466921, - 0.587212716720073, 0.595277547988606, 0.603282851998404, + 0.554374336179161, 0.562669153405032, 0.570907704184454, 0.57908916466921, + 0.587212716720073, 0.595277547988606, 0.603282851998404, 0.611227828225735, 0.619111682179599, 0.626933625481169, - 0.634692875942635, 0.642388657645414, 0.650020201017752, 0.657586742911669, - 0.665087526679283, 0.672521802248466, 0.679888826197857, + 0.634692875942635, 0.642388657645414, 0.650020201017752, 0.657586742911669, + 0.665087526679283, 0.672521802248466, 0.679888826197857, 0.687187861831201, 0.694418179251016, 0.701579055431586, - 0.70866977429126, 0.715689626764061, 0.722637910870592, 0.729513931788232, - 0.736317001920619, 0.74304644096641, 0.749701575987307, + 0.70866977429126, 0.715689626764061, 0.722637910870592, 0.729513931788232, + 0.736317001920619, 0.74304644096641, 0.749701575987307, 0.756281741475356, 0.762786279419489, 0.769214539371333, - 0.77556587851025, 0.781839661707619, 0.788035261590348, 0.794152058603611, - 0.800189441072806, 0.806146805264716, 0.812023555447886, + 0.77556587851025, 0.781839661707619, 0.788035261590348, 0.794152058603611, + 0.800189441072806, 0.806146805264716, 0.812023555447886, 0.817819103952194, 0.823532871227622, 0.829164285902202, - 0.83471278483916, 0.840177813193225, 0.845558824466117, 0.850855280561193, - 0.856066651837255, 0.861192417161521, 0.866232063961728, + 0.83471278483916, 0.840177813193225, 0.845558824466117, 0.850855280561193, + 0.856066651837255, 0.861192417161521, 0.866232063961728, 0.871185088277397, 0.876050994810224, 0.880829296973609, - 0.885519516941319, 0.890121185695265, 0.894633843072407, 0.899057037810768, - 0.903390327594559, 0.907633279098413, 0.911785468030717, + 0.885519516941319, 0.890121185695265, 0.894633843072407, 0.899057037810768, + 0.903390327594559, 0.907633279098413, 0.911785468030717, 0.915846479176035, 0.919815906436639, 0.92369335287311, - 0.927478430744036, 0.931170761544783, 0.934769976045349, 0.938275714327283, - 0.941687625819678, 0.945005369334228, 0.948228613099346, + 0.927478430744036, 0.931170761544783, 0.934769976045349, 0.938275714327283, + 0.941687625819678, 0.945005369334228, 0.948228613099346, 0.951357034793342, 0.954390321576654, 0.957328170123131, - 0.960170286650366, 0.962916386949075, 0.965566196411518, 0.968119450058955, - 0.970575892568149, 0.972935278296897, 0.975197371308593, + 0.960170286650366, 0.962916386949075, 0.965566196411518, 0.968119450058955, + 0.970575892568149, 0.972935278296897, 0.975197371308593, 0.977361945395819, 0.979428784102971, 0.981397680747901, - 0.983268438442584, 0.985040870112812, 0.986714798516892, 0.98829005626338, - 0.989766485827815, 0.991143939568469, 0.992422279741117, + 0.983268438442584, 0.985040870112812, 0.986714798516892, 0.98829005626338, + 0.989766485827815, 0.991143939568469, 0.992422279741117, 0.993601378512806, 0.994681117974643, 0.99566139015358, - 0.996542097023217, 0.997323150513601, 0.998004472520033, 0.998585994910881, - 0.99906765953439, 0.999449418224499, 0.999731232805658, + 0.996542097023217, 0.997323150513601, 0.998004472520033, 0.998585994910881, + 0.99906765953439, 0.999449418224499, 0.999731232805658, 0.999913075096642, 0.999994926913375, 0.999976780070743, - 0.999858636383415, 0.999640507665662, 0.999322415730172, 0.998904392385876, - 0.998386479434759, 0.997768728667684, 0.997051201859214, + 0.999858636383415, 0.999640507665662, 0.999322415730172, 0.998904392385876, + 0.998386479434759, 0.997768728667684, 0.997051201859214, 0.996233970761431, 0.995317117096764, 0.994300732549815, - 0.993184918758193, 0.991969787302346, 0.990655459694407, 0.989242067366043, - 0.987729751655308, 0.986118663792513, 0.984408964885101, + 0.993184918758193, 0.991969787302346, 0.990655459694407, 0.989242067366043, + 0.987729751655308, 0.986118663792513, 0.984408964885101, 0.982600825901538, 0.980694427654217, 0.978689960781373, - 0.976587625728023, 0.974387632725921, 0.972090201772533, 0.96969556260904, - 0.967203954697364, 0.964615627196218, 0.961930838936196, + 0.976587625728023, 0.974387632725921, 0.972090201772533, 0.96969556260904, + 0.967203954697364, 0.964615627196218, 0.961930838936196, 0.959149858393887, 0.956272963665028, 0.953300442436693, - 0.95023259195853, 0.947069719013028, 0.943812139884847, 0.940460180329185, - 0.937014175539204, 0.933474470112512, 0.929841418016701, + 0.95023259195853, 0.947069719013028, 0.943812139884847, 0.940460180329185, + 0.937014175539204, 0.933474470112512, 0.929841418016701, 0.926115382553955, 0.922296736324713, 0.918385861190416, - 0.914383148235319, 0.910288997727383, 0.906103819078245, 0.901828030802283, - 0.897462060474762, 0.893006344689077, 0.888461329013091, + 0.914383148235319, 0.910288997727383, 0.906103819078245, 0.901828030802283, + 0.897462060474762, 0.893006344689077, 0.888461329013091, 0.883827467944587, 0.879105224865808, 0.874295071997128, - 0.869397490349825, 0.864412969677983, 0.859342008429514, 0.854185113696319, - 0.848942801163572, 0.84361559505816, 0.838204028096251, + 0.869397490349825, 0.864412969677983, 0.859342008429514, 0.854185113696319, + 0.848942801163572, 0.84361559505816, 0.838204028096251, 0.832708641430035, 0.827129984593597, 0.821468615447972, - 0.815725100125357, 0.809900012972498, 0.803993936493257, 0.798007461290359, - 0.791941186006336, 0.785795717263661, 0.779571669604088, + 0.815725100125357, 0.809900012972498, 0.803993936493257, 0.798007461290359, + 0.791941186006336, 0.785795717263661, 0.779571669604088, 0.773269665427194, 0.766890334928147, 0.760434316034681, - 0.753902254343305, 0.747294803054744, 0.740612622908621, 0.733856382117381, - 0.727026756299476, 0.720124428411794, 0.713150088681373, + 0.753902254343305, 0.747294803054744, 0.740612622908621, 0.733856382117381, + 0.727026756299476, 0.720124428411794, 0.713150088681373, 0.706104434536373, 0.698988170536338, 0.691802008301737, - 0.684546666442807, 0.677222870487685, 0.669831352809865, 0.662372852554955, - 0.654848115566766, 0.647257894312724, 0.639602947808631, + 0.684546666442807, 0.677222870487685, 0.669831352809865, 0.662372852554955, + 0.654848115566766, 0.647257894312724, 0.639602947808631, 0.631884041542758, 0.624101947399299, 0.616257443581182, - 0.608351314532255, 0.600384350858831, 0.592357349250641, 0.584271112401154, - 0.576126448927319, 0.567924173288695, 0.55966510570601, + 0.608351314532255, 0.600384350858831, 0.592357349250641, 0.584271112401154, + 0.576126448927319, 0.567924173288695, 0.55966510570601, 0.551350072079141, 0.542979903904521, 0.534555438191992, - 0.526077517381105, 0.517546989256877, 0.50896470686501, 0.500331528426593, - 0.491648317252275, 0.482915941655938, 0.474135274867862, + 0.526077517381105, 0.517546989256877, 0.50896470686501, 0.500331528426593, + 0.491648317252275, 0.482915941655938, 0.474135274867862, 0.465307194947413, 0.456432584695223, 0.447512331564922, - 0.43854732757439, 0.429538469216557, 0.420486657369749, 0.411392797207609, - 0.402257798108573, 0.393082573564941, 0.38386804109152, + 0.43854732757439, 0.429538469216557, 0.420486657369749, 0.411392797207609, + 0.402257798108573, 0.393082573564941, 0.38386804109152, 0.374615122133879, 0.365324741976202, 0.355997829648764, - 0.346635317835026, 0.337238142778366, 0.327807244188458, 0.318343565147303, - 0.30884805201492, 0.299321654334707, 0.289765324738495, + 0.346635317835026, 0.337238142778366, 0.327807244188458, 0.318343565147303, + 0.30884805201492, 0.299321654334707, 0.289765324738495, 0.280180018851278, 0.27056669519566, 0.260926315095994, - 0.251259842582256, 0.241568244293641, 0.231852489381904, 0.222113549414439, - 0.212352398277126, 0.202570012076944, 0.192767369044364, + 0.251259842582256, 0.241568244293641, 0.231852489381904, 0.222113549414439, + 0.212352398277126, 0.202570012076944, 0.192767369044364, 0.182945449435517, 0.173105235434182, 0.163247711053556, - 0.153373862037864, 0.14348467576378, 0.13358114114169, 0.123664248516802, - 0.113734989570117, 0.103794357219253, 0.0938433455191623, + 0.153373862037864, 0.14348467576378, 0.13358114114169, 0.123664248516802, + 0.113734989570117, 0.103794357219253, 0.0938433455191623, 0.0838829495627223, 0.0739141653812273, 0.06393798984479, - 0.0539554205626498, 0.0439674557834159, 0.0339750942952423, - 0.0239793353259525, 0.0139811784431128, 0.00398162345407974, - -0.0060183296939816, -0.0160176810140879, -0.0260154305794408, + 0.0539554205626498, 0.0439674557834159, 0.0339750942952423, + 0.0239793353259525, 0.0139811784431128, 0.00398162345407974, + -0.0060183296939816, -0.0160176810140879, -0.0260154305794408, -0.0360105786234153, - -0.0460021256395369, -0.0559890724814288, -0.0659704204627299, - -0.0759451714569599, -0.0859123279973325, -0.0958708933764978, - -0.105819871746218, -0.115758268216946, -0.125685088957318, + -0.0460021256395369, -0.0559890724814288, -0.0659704204627299, + -0.0759451714569599, -0.0859123279973325, -0.0958708933764978, + -0.105819871746218, -0.115758268216946, -0.125685088957318, -0.135599341293531, - -0.145500033808614, -0.155386176441565, -0.16525678058636, - -0.17511085919081, -0.184947426855267, -0.194765499931161, - -0.204564096619365, -0.214342237068377, -0.2240989434723, + -0.145500033808614, -0.155386176441565, -0.16525678058636, + -0.17511085919081, -0.184947426855267, -0.194765499931161, + -0.204564096619365, -0.214342237068377, -0.2240989434723, -0.233833240168624, - -0.243544153735791, -0.253230713090538, -0.262891949585, - -0.272526897103582, -0.282134592159557, -0.291714073991427, - -0.301264384658992, -0.310784569139144, -0.320273675421368, + -0.243544153735791, -0.253230713090538, -0.262891949585, + -0.272526897103582, -0.282134592159557, -0.291714073991427, + -0.301264384658992, -0.310784569139144, -0.320273675421368, -0.329730754602944, - -0.339154860983835, -0.348545052161256, -0.357900389123914, - -0.367219936345908, -0.376502761880283, -0.385747937452222, - -0.394954538551871, -0.404121644526792, -0.413248338674028, + -0.339154860983835, -0.348545052161256, -0.357900389123914, + -0.367219936345908, -0.376502761880283, -0.385747937452222, + -0.394954538551871, -0.404121644526792, -0.413248338674028, -0.422333708331768, - -0.431376844970621, -0.440376844284454, -0.449332806280839, - -0.458243835371038, -0.467109040459569, -0.47592753503331, - -0.484698437250152, -0.493420870027184, -0.502093961128397, + -0.431376844970621, -0.440376844284454, -0.449332806280839, + -0.458243835371038, -0.467109040459569, -0.47592753503331, + -0.484698437250152, -0.493420870027184, -0.502093961128397, -0.510716843251906, - -0.519288654116686, -0.527808536548793, -0.536275638567084, - -0.544689113468413, -0.553048119912302, -0.561351822005071, - -0.569599389383433, -0.57778999729752, -0.585922826693367, + -0.519288654116686, -0.527808536548793, -0.536275638567084, + -0.544689113468413, -0.553048119912302, -0.561351822005071, + -0.569599389383433, -0.57778999729752, -0.585922826693367, -0.593997064294812, - -0.602011902684824, -0.609966540386242, -0.617860181941925, - -0.625692037994295, -0.633461325364275, -0.641167267129602, - -0.648809092702519, -0.656386037906838, -0.663897345054353, + -0.602011902684824, -0.609966540386242, -0.617860181941925, + -0.625692037994295, -0.633461325364275, -0.641167267129602, + -0.648809092702519, -0.656386037906838, -0.663897345054353, -0.671342263020609, - -0.678720047320012, -0.686029960180282, -0.693271270616224, - -0.700443254502829, -0.707545194647683, -0.714576380862692, - -0.721536110035093, -0.728423686197768, -0.735238420598841, + -0.678720047320012, -0.686029960180282, -0.693271270616224, + -0.700443254502829, -0.707545194647683, -0.714576380862692, + -0.721536110035093, -0.728423686197768, -0.735238420598841, -0.741979631770551, - -0.748646645597399, -0.755238795383558, -0.76175542191954, - -0.768195873548125, -0.774559506229517, -0.780845683605749, - -0.787053777064324, -0.793183165801068, -0.799233236882215, + -0.748646645597399, -0.755238795383558, -0.76175542191954, + -0.768195873548125, -0.774559506229517, -0.780845683605749, + -0.787053777064324, -0.793183165801068, -0.799233236882215, -0.8052033853057, - -0.811093014061656, -0.816901534192113, -0.8226283648499, - -0.828272933356724, -0.833834675260437, -0.839313034391484, - -0.844707462918517, -0.850017421403178, -0.855242378854046, + -0.811093014061656, -0.816901534192113, -0.8226283648499, + -0.828272933356724, -0.833834675260437, -0.839313034391484, + -0.844707462918517, -0.850017421403178, -0.855242378854046, -0.860381812779727, - -0.865435209241112, -0.870402062902767, -0.875281877083464, - -0.880074163805853, -0.884778443845253, -0.889394246777581, - -0.893921111026392, -0.898358583909032, -0.90270622168191, + -0.865435209241112, -0.870402062902767, -0.875281877083464, + -0.880074163805853, -0.884778443845253, -0.889394246777581, + -0.893921111026392, -0.898358583909032, -0.90270622168191, -0.906963589584872, - -0.911130261884677, -0.915205821917566, -0.919189862130932, - -0.923081984124074, -0.926881798688036, -0.930588925844528, - -0.934202994883924, -0.937723644402332, -0.941150522337732, + -0.911130261884677, -0.915205821917566, -0.919189862130932, + -0.923081984124074, -0.926881798688036, -0.930588925844528, + -0.934202994883924, -0.937723644402332, -0.941150522337732, -0.944483286005189, - -0.947721602131112, -0.950865146886587, -0.953913605919758, - -0.956866674387264, -0.959724056984716, -0.962485467976237, - -0.965150631223029, -0.967719280210989, -0.970191158077357, + -0.947721602131112, -0.950865146886587, -0.953913605919758, + -0.956866674387264, -0.959724056984716, -0.962485467976237, + -0.965150631223029, -0.967719280210989, -0.970191158077357, -0.972566017636408, - -0.974843621404164, -0.977023741622146, -0.97910616028015, - -0.981090669138045, -0.982977069746599, -0.984765173467324, - -0.986454801491336, -0.988045784857242, -0.989537964468031, + -0.974843621404164, -0.977023741622146, -0.97910616028015, + -0.981090669138045, -0.982977069746599, -0.984765173467324, + -0.986454801491336, -0.988045784857242, -0.989537964468031, -0.990931191106986, - -0.992225325452603, -0.993420238092527, -0.994515809536489, - -0.995511930228257, -0.996408500556594, -0.997205430865212, - -0.997902641461745, -0.998500062625715, -0.998997634615504, + -0.992225325452603, -0.993420238092527, -0.994515809536489, + -0.995511930228257, -0.996408500556594, -0.997205430865212, + -0.997902641461745, -0.998500062625715, -0.998997634615504, -0.999395307674325, - -0.999693042035206, -0.999890807924959, -0.999988585567158, - -0.999986365184122, -0.999884146997886, -0.999681941230185, - -0.999379768101426, -0.998977657828671, -0.998475650622611, + -0.999693042035206, -0.999890807924959, -0.999988585567158, + -0.999986365184122, -0.999884146997886, -0.999681941230185, + -0.999379768101426, -0.998977657828671, -0.998475650622611, -0.99787379668355, - -0.997172156196378, -0.996370799324562, -0.995469806203119, - -0.994469266930611, -0.993369281560131, -0.992169960089301, - -0.990871422449267, -0.989473798492712, -0.987977227980866, + -0.997172156196378, -0.996370799324562, -0.995469806203119, + -0.994469266930611, -0.993369281560131, -0.992169960089301, + -0.990871422449267, -0.989473798492712, -0.987977227980866, -0.986381860569534, - -0.984687855794127, -0.982895383053711, -0.981004621594066, - -0.979015760489763, -0.976928998625255, -0.974744544674989, - -0.97246261708254, -0.970083444038766, -0.967607263458988, + -0.984687855794127, -0.982895383053711, -0.981004621594066, + -0.979015760489763, -0.976928998625255, -0.974744544674989, + -0.97246261708254, -0.970083444038766, -0.967607263458988, -0.965034322959201, - -0.96236487983131, -0.959599201017404, -0.95673756308306, - -0.953780252189686, -0.950727564065908, -0.947579803977993, - -0.944337286699328, -0.941000336478938, -0.937569287009064, + -0.96236487983131, -0.959599201017404, -0.95673756308306, + -0.953780252189686, -0.950727564065908, -0.947579803977993, + -0.944337286699328, -0.941000336478938, -0.937569287009064, -0.934044481391795, - -0.930426272104753, -0.926715020965855, -0.922911099097119, - -0.919014886887564, -0.915026773955164, -0.910947159107888, - -0.906776450303821, -0.902515064610368, -0.898163428162546, + -0.930426272104753, -0.926715020965855, -0.922911099097119, + -0.919014886887564, -0.915026773955164, -0.910947159107888, + -0.906776450303821, -0.902515064610368, -0.898163428162546, -0.893721976120377, - -0.889191152625361, -0.884571410756073, -0.879863212482849, - -0.875067028621594, -0.870183338786697, -0.865212631343072, - -0.86015540335732, -0.855012160548026, -0.849783417235186, - -0.844469696288772 + -0.889191152625361, -0.884571410756073, -0.879863212482849, + -0.875067028621594, -0.870183338786697, -0.865212631343072, + -0.86015540335732, -0.855012160548026, -0.849783417235186, + -0.844469696288772 }; diff --git a/libdap4/CMakeLists.txt b/libdap4/CMakeLists.txt index ce586a498f..0eb4e173cc 100644 --- a/libdap4/CMakeLists.txt +++ b/libdap4/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. SET(dap4_SOURCES d4crc32.c d4curlfunctions.c d4fix.c d4data.c d4file.c d4parser.c d4meta.c d4varx.c d4dump.c d4swap.c d4chunk.c d4printer.c d4read.c d4http.c d4util.c d4odom.c d4cvt.c d4debug.c ncd4dispatch.c ezxml_extra.c ezxml.c) add_library(dap4 OBJECT ${dap4_SOURCES}) @@ -29,4 +35,3 @@ ENDIF(BUILD_PARALLEL) FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.c ${CMAKE_CURRENT_SOURCE_DIR}/*.h) SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} dce.y CMakeLists.txt Makefile.am) ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") - diff --git a/libdap4/Makefile.am b/libdap4/Makefile.am index 3dd113090e..8a5690fed9 100644 --- a/libdap4/Makefile.am +++ b/libdap4/Makefile.am @@ -1,5 +1,5 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. +# Copyright 2008, see the COPYRIGHT file for more information. # This automake file generates the Makefile to libdap2. Whatever that # is! diff --git a/libdap4/d4bytes.c b/libdap4/d4bytes.c index 8a7ee3f773..149f02eb0e 100644 --- a/libdap4/d4bytes.c +++ b/libdap4/d4bytes.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include diff --git a/libdap4/d4bytes.h b/libdap4/d4bytes.h index 2ad1c610ef..302eea2dda 100644 --- a/libdap4/d4bytes.h +++ b/libdap4/d4bytes.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef D4BYTES_H diff --git a/libdap4/d4chunk.c b/libdap4/d4chunk.c index c85b48b7b2..5c211722b3 100644 --- a/libdap4/d4chunk.c +++ b/libdap4/d4chunk.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4chunk.h b/libdap4/d4chunk.h index eecf500eff..97ae4d4d59 100644 --- a/libdap4/d4chunk.h +++ b/libdap4/d4chunk.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4curlflags.c b/libdap4/d4curlflags.c index 89e09aa10a..9cf6d4202c 100644 --- a/libdap4/d4curlflags.c +++ b/libdap4/d4curlflags.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4curlfunctions.c b/libdap4/d4curlfunctions.c index 7279d7289e..7185880789 100644 --- a/libdap4/d4curlfunctions.c +++ b/libdap4/d4curlfunctions.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4curlfunctions.h b/libdap4/d4curlfunctions.h index 52fe1b5d26..3f1d85c9bd 100644 --- a/libdap4/d4curlfunctions.h +++ b/libdap4/d4curlfunctions.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4cvt.c b/libdap4/d4cvt.c index 2b686110de..9e7666ecc4 100644 --- a/libdap4/d4cvt.c +++ b/libdap4/d4cvt.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ #include "config.h" diff --git a/libdap4/d4data.c b/libdap4/d4data.c index f737836044..51ea6e28b4 100644 --- a/libdap4/d4data.c +++ b/libdap4/d4data.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4debug.c b/libdap4/d4debug.c index 8d11c76167..88e99a3e2f 100644 --- a/libdap4/d4debug.c +++ b/libdap4/d4debug.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ #include "config.h" diff --git a/libdap4/d4debug.h b/libdap4/d4debug.h index 4d4ff68d16..cbba56bead 100644 --- a/libdap4/d4debug.h +++ b/libdap4/d4debug.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ #ifndef D4DEBUG_H diff --git a/libdap4/d4dump.c b/libdap4/d4dump.c index 0384fa9ec8..b2e189310d 100644 --- a/libdap4/d4dump.c +++ b/libdap4/d4dump.c @@ -1,5 +1,5 @@ -/* Copyright 2012, UCAR/Unidata. - See the LICENSE file for more information. +/* Copyright 2018, UCAR/Unidata. + See the COPYRIGHT file for more information. */ #include "d4includes.h" @@ -107,4 +107,3 @@ NCD4_dumpatomic(NCD4node* var, void* data) union ATOMICS* p = (union ATOMICS*)data; return p; } - diff --git a/libdap4/d4file.c b/libdap4/d4file.c index cbb69b1d4c..8efe4e1417 100644 --- a/libdap4/d4file.c +++ b/libdap4/d4file.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4fix.c b/libdap4/d4fix.c index e28d88b0ba..ac16366cf6 100644 --- a/libdap4/d4fix.c +++ b/libdap4/d4fix.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4http.c b/libdap4/d4http.c index 891541d4e2..1c1319f047 100644 --- a/libdap4/d4http.c +++ b/libdap4/d4http.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4http.h b/libdap4/d4http.h index dbd307a6ee..ec47fe9559 100644 --- a/libdap4/d4http.h +++ b/libdap4/d4http.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4includes.h b/libdap4/d4includes.h index 6979e78769..02ab0262fd 100644 --- a/libdap4/d4includes.h +++ b/libdap4/d4includes.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4mem.c b/libdap4/d4mem.c index c46b4bcaed..dda02b85e7 100644 --- a/libdap4/d4mem.c +++ b/libdap4/d4mem.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4meta.c b/libdap4/d4meta.c index 57e8ffd3ff..20d200705c 100644 --- a/libdap4/d4meta.c +++ b/libdap4/d4meta.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ @@ -1038,7 +1038,9 @@ computeOffsets(NCD4meta* builder, NCD4node* cmpd) field->meta.offset = offset; assert(ftype->meta.memsize > 0); size = ftype->meta.memsize; - //field->meta.memsize = size; +#if 0 + field->meta.memsize = size; +#endif /* Now ultiply by the field dimproduct*/ if(nclistlength(field->dims) > 0) { d4size_t count = NCD4_dimproduct(field); diff --git a/libdap4/d4odom.c b/libdap4/d4odom.c index 419bb41f58..40ec4de945 100644 --- a/libdap4/d4odom.c +++ b/libdap4/d4odom.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4odom.h b/libdap4/d4odom.h index 385ebc90a4..ae37997e19 100644 --- a/libdap4/d4odom.h +++ b/libdap4/d4odom.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4parser.c b/libdap4/d4parser.c index 7c202f8732..d7cf36f252 100644 --- a/libdap4/d4parser.c +++ b/libdap4/d4parser.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4printer.c b/libdap4/d4printer.c index 778f11c456..88b1392d24 100644 --- a/libdap4/d4printer.c +++ b/libdap4/d4printer.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4read.c b/libdap4/d4read.c index 598c683cb4..b9a39070ed 100644 --- a/libdap4/d4read.c +++ b/libdap4/d4read.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include "d4includes.h" #include "d4curlfunctions.h" #ifdef HAVE_FCNTL_H diff --git a/libdap4/d4read.h b/libdap4/d4read.h index a672e4babe..9816172cab 100644 --- a/libdap4/d4read.h +++ b/libdap4/d4read.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4swap.c b/libdap4/d4swap.c index 6a48d8fad5..3fc0aa58f3 100644 --- a/libdap4/d4swap.c +++ b/libdap4/d4swap.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4util.c b/libdap4/d4util.c index be6e2305fe..9a966cb469 100644 --- a/libdap4/d4util.c +++ b/libdap4/d4util.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ @@ -14,6 +14,8 @@ #include #endif +extern int mkstemp(char *template); + #define LBRACKET '[' #define RBRACKET ']' diff --git a/libdap4/d4util.h b/libdap4/d4util.h index 00f39eb03b..cba660eeb2 100644 --- a/libdap4/d4util.h +++ b/libdap4/d4util.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/d4varx.c b/libdap4/d4varx.c index 4316b66bd4..ee7095ed3f 100644 --- a/libdap4/d4varx.c +++ b/libdap4/d4varx.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/ezxml.c b/libdap4/ezxml.c index 59d76b4176..0240768a94 100644 --- a/libdap4/ezxml.c +++ b/libdap4/ezxml.c @@ -33,6 +33,9 @@ #endif #include "ezxml.h" +extern int vsnprintf(char*, size_t, const char*, va_list ap); + + #define EZXML_WS "\t\r\n " /* whitespace*/ #define EZXML_ERRL 128 /* maximum error string length*/ @@ -94,7 +97,7 @@ ezxml_t ezxml_vget(ezxml_t xml, va_list ap) int idx = -1; if (name && *name) { - idx = va_arg(ap, int); + idx = va_arg(ap, int); xml = ezxml_child(xml, name); } return (idx < 0) ? xml : ezxml_vget(ezxml_idx(xml, idx), ap); @@ -136,7 +139,7 @@ ezxml_t ezxml_err(ezxml_root_t root, char *s, const char *err, ...) va_list ap; int line = 1; char *t, fmt[EZXML_ERRL]; - + for (t = root->s; t < s; t++) if (*t == '\n') line++; snprintf(fmt, EZXML_ERRL, "[error near line %d]: %s", line, err); @@ -164,7 +167,7 @@ char *ezxml_decode(char *s, char **ent, char t) if (*s == '\n') memmove(s, (s + 1), strlen(s)); } } - + for (s = r; ; ) { while (*s && *s != '&' && (*s != '%' || t != '%') && !isspace(*s)) s++; @@ -219,7 +222,7 @@ char *ezxml_decode(char *s, char **ent, char t) void ezxml_open_tag(ezxml_root_t root, char *name, char **attr) { ezxml_t xml = root->cur; - + if (xml->name) xml = ezxml_add_child(xml, name, strlen(xml->txt)); else xml->name = name; /* first open tag*/ @@ -318,7 +321,7 @@ short ezxml_internal_dtd(ezxml_root_t root, char *s, size_t len) { char q, *c, *t, *n = NULL, *v, **ent, **pe; int i, j; - + pe = memcpy(malloc(sizeof(EZXML_NIL)), EZXML_NIL, sizeof(EZXML_NIL)); for (s[len] = '\0'; s; ) { @@ -454,7 +457,7 @@ char *ezxml_str2utf8(char **s, size_t *len) void ezxml_free_attr(char **attr) { int i = 0; char *m; - + if (! attr || attr == EZXML_NIL) return; /* nothing to free*/ while (attr[i]) i += 2; /* find end of attribute list*/ m = attr[i + 1]; /* list of which names and values are malloced*/ @@ -477,7 +480,7 @@ ezxml_t ezxml_parse_str(char *s, size_t len) if (! len) return ezxml_err(root, NULL, "root tag missing"); root->u = ezxml_str2utf8(&s, &len); /* convert utf-16 to utf-8*/ root->e = (root->s = s) + len; /* record start and end of work area*/ - + e = s[len - 1]; /* save end char*/ s[len - 1] = '\0'; /* turn end char into null terminator*/ @@ -487,14 +490,14 @@ ezxml_t ezxml_parse_str(char *s, size_t len) for (; ; ) { attr = (char **)EZXML_NIL; d = ++s; - + if (isalpha(*s) || *s == '_' || *s == ':' || *s < '\0') { /* new tag*/ if (! root->cur) return ezxml_err(root, d, "markup outside of root element"); s += strcspn(s, EZXML_WS "/>"); while (isspace(*s)) *(s++) = '\0'; /* null terminate tag name*/ - + if (*s && *s != '/' && *s != '>') /* find tag in default attr list*/ for (i = 0; (a = root->attr[i]) && strcmp(a[0], d); i++); @@ -509,7 +512,7 @@ ezxml_t ezxml_parse_str(char *s, size_t len) attr[l] = s; /* set attribute name*/ s += strcspn(s, EZXML_WS "=/>"); - if (*s == '=' || isspace(*s)) { + if (*s == '=' || isspace(*s)) { *(s++) = '\0'; /* null terminate tag attribute name*/ q = *(s += strspn(s, EZXML_WS "=")); if (q == '"' || q == '\'') { /* attribute value*/ @@ -547,7 +550,7 @@ ezxml_t ezxml_parse_str(char *s, size_t len) } else { if (l) ezxml_free_attr(attr); - return ezxml_err(root, d, "missing >"); + return ezxml_err(root, d, "missing >"); } } else if (*s == '/') { /* close tag*/ @@ -567,7 +570,7 @@ ezxml_t ezxml_parse_str(char *s, size_t len) else return ezxml_err(root, d, "unclosed ') || (l && (*s != ']' || + for (l = 0; *s && ((! l && *s != '>') || (l && (*s != ']' || *(s + strspn(s + 1, EZXML_WS) + 1) != '>'))); l = (*s == '[') ? 1 : l) s += strcspn(s + 1, "[]>") + 1; if (! *s && e != '>') @@ -577,12 +580,12 @@ ezxml_t ezxml_parse_str(char *s, size_t len) } else if (*s == '?') { /* processing instructions*/ do { s = strchr(s, '?'); } while (s && *(++s) && *s != '>'); - if (! s || (! *s && e != '>')) + if (! s || (! *s && e != '>')) return ezxml_err(root, d, "unclosed *max) *dst = realloc(*dst, *max += EZXML_BUFSIZE); @@ -687,7 +690,7 @@ char *ezxml_toxml_r(ezxml_t xml, char **s, size_t *len, size_t *max, *s = (xml->child) ? ezxml_toxml_r(xml->child, s, len, max, 0, attr) /*child*/ : ezxml_ampencode(xml->txt, -1, s, len, max, 0); /*data*/ - + while (*len + strlen(xml->name) + 4 > *max) /* reallocate s*/ *s = realloc(*s, *max += EZXML_BUFSIZE); @@ -765,7 +768,7 @@ void ezxml_free(ezxml_t xml) for (j = 1; root->pi[i][j]; j++); free(root->pi[i][j + 1]); free(root->pi[i]); - } + } if (root->pi[0]) free(root->pi); /* free processing instructions*/ if (root->len == -1) free(root->m); /* malloced xml data*/ @@ -793,7 +796,7 @@ ezxml_t ezxml_new(const char *name) { static char *ent[] = { "lt;", "<", "gt;", ">", "quot;", """, "apos;", "'", "amp;", "&", NULL }; - ezxml_root_t root = (ezxml_root_t)memset(malloc(sizeof(struct ezxml_root)), + ezxml_root_t root = (ezxml_root_t)memset(malloc(sizeof(struct ezxml_root)), '\0', sizeof(struct ezxml_root)); root->xml.name = (char *)name; root->cur = &root->xml; @@ -948,7 +951,7 @@ ezxml_t ezxml_cut(ezxml_t xml) while (cur->next && cur->next != xml) cur = cur->next; if (cur->next) cur->next = cur->next->next; /* patch next list*/ - } + } } xml->ordered = xml->sibling = xml->next = NULL; return xml; diff --git a/libdap4/ezxml.h b/libdap4/ezxml.h index f5e235adba..64a32016f6 100644 --- a/libdap4/ezxml.h +++ b/libdap4/ezxml.h @@ -66,7 +66,7 @@ ezxml_t ezxml_parse_fd(int fd); /* a wrapper for ezxml_parse_fd() that accepts a file name*/ ezxml_t ezxml_parse_file(const char *file); - + /* Wrapper for ezxml_parse_str() that accepts a file stream. Reads the entire*/ /* stream into memory and then parses it. For xml files, use ezxml_parse_file()*/ /* or ezxml_parse_fd()*/ @@ -111,7 +111,7 @@ const char **ezxml_pi(ezxml_t xml, const char *target); /* frees the memory allocated for an ezxml structure*/ void ezxml_free(ezxml_t xml); - + /* returns parser error message or empty string if none*/ const char *ezxml_error(ezxml_t xml); diff --git a/libdap4/ezxml_extra.c b/libdap4/ezxml_extra.c index 3e58bd502f..954b189b5b 100644 --- a/libdap4/ezxml_extra.c +++ b/libdap4/ezxml_extra.c @@ -1,5 +1,5 @@ /* - * Copyright 1998-2015 University Corporation for Atmospheric Research/Unidata + * Copyright 1998-2018 University Corporation for Atmospheric Research/Unidata * See the LICENSE file for more information. */ diff --git a/libdap4/ncd4.h b/libdap4/ncd4.h index 5f682d4166..989f6ba171 100644 --- a/libdap4/ncd4.h +++ b/libdap4/ncd4.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/ncd4dispatch.c b/libdap4/ncd4dispatch.c index 97eb2290b3..9dc764a7ce 100644 --- a/libdap4/ncd4dispatch.c +++ b/libdap4/ncd4dispatch.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ @@ -728,7 +728,7 @@ NCD4_get_var_chunk_cache(int ncid, int p2, size_t* p3, size_t* p4, float* p5) return (ret); } -#endif // USE_NETCDF4 +#endif /*USE_NETCDF4*/ /**************************************************/ /* diff --git a/libdap4/ncd4dispatch.h b/libdap4/ncd4dispatch.h index 449b24eda7..dde3cf4ac0 100644 --- a/libdap4/ncd4dispatch.h +++ b/libdap4/ncd4dispatch.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdap4/ncd4types.h b/libdap4/ncd4types.h index 44496234a2..9581ff6623 100644 --- a/libdap4/ncd4types.h +++ b/libdap4/ncd4types.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdispatch/CMakeLists.txt b/libdispatch/CMakeLists.txt index 9d274464c3..133121dc23 100644 --- a/libdispatch/CMakeLists.txt +++ b/libdispatch/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. SET(libdispatch_SOURCES dparallel.c dcopy.c dfile.c ddim.c datt.c dattinq.c dattput.c dattget.c derror.c dvar.c dvarget.c dvarput.c dvarinq.c ddispatch.c nclog.c dstring.c dutf8.c dinternal.c doffsets.c ncuri.c nclist.c ncbytes.c nchashmap.c nctime.c nc.c nclistmgr.c utf8proc.h utf8proc.c dwinpath.c dutil.c drc.c dauth.c dreadonly.c dnotnc4.c dnotnc3.c crc32.c daux.c) IF(USE_NETCDF4) diff --git a/libdispatch/Makefile.am b/libdispatch/Makefile.am index 9633bda48a..7760faf174 100644 --- a/libdispatch/Makefile.am +++ b/libdispatch/Makefile.am @@ -1,5 +1,5 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. +# Copyright 2008, see the COPYRIGHT file for more information. # This Makefile controls the building of the dispatch layer of the # netCDF library. The dispatch layer decides whether to call the @@ -18,13 +18,18 @@ libdispatch_la_CPPFLAGS = ${AM_CPPFLAGS} libdispatch_la_SOURCES = dparallel.c dcopy.c dfile.c ddim.c datt.c \ dattinq.c dattput.c dattget.c derror.c dvar.c dvarget.c dvarput.c \ dvarinq.c dinternal.c ddispatch.c dutf8.c nclog.c dstring.c ncuri.c \ -nclist.c ncbytes.c nchashmap.c nctime.c nc.c nclistmgr.c drc.c \ +nclist.c ncbytes.c nchashmap.c nctime.c nc.c nclistmgr.c \ dauth.c doffsets.c dwinpath.c dutil.c dreadonly.c dnotnc4.c dnotnc3.c \ crc32.c crc32.h daux.c # Add the utf8 codebase libdispatch_la_SOURCES += utf8proc.c utf8proc.h +# The rc code is currently only used by libdap2 and libdap4, +# but in the future, it will be expanded to be used as the +# general .rc file for the netcdf-c library. So, always compile it. +libdispatch_la_SOURCES += drc.c + # Add functions only found in netCDF-4. if USE_NETCDF4 libdispatch_la_SOURCES += dgroup.c dvlen.c dcompound.c dtype.c denum.c \ diff --git a/libdispatch/datt.c b/libdispatch/datt.c index 9a9df359ac..d9896ed5e2 100644 --- a/libdispatch/datt.c +++ b/libdispatch/datt.c @@ -1,6 +1,6 @@ /** \file -Copyright 2010 University Corporation for Atmospheric -Research/Unidata. See \ref copyright file for more info. +Copyright 2018 University Corporation for Atmospheric +Research/Unidata. See \ref copyright file for more info. These functions read and write attributes. */ @@ -22,7 +22,7 @@ created, while the netCDF dataset is in define mode. Additional attributes may be added later by reentering define mode. A netCDF attribute has a netCDF variable to which it is assigned, a -name, a type, a length, and a sequence of one or more values. +name, a type, a length, and a sequence of one or more values. An attribute is designated by its variable ID and name. When an attribute name is not known, it may be designated by its variable ID @@ -50,7 +50,7 @@ Operations supported on attributes are: - Copy attribute from one netCDF variable to another. - Get name of attribute from its number. - Rename an attribute. -- Delete an attribute. +- Delete an attribute. */ /*! \{*/ /* All these functions are part of the above defgroup... */ @@ -69,16 +69,16 @@ new name is longer than the original name, the netCDF dataset must be in define mode. You cannot rename an attribute to have the same name as another attribute of the same variable. -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as +\param ncid NetCDF or group ID, from a previous call to nc_open(), +nc_create(), nc_def_grp(), or associated inquiry functions such as nc_inq_ncid(). \param varid Variable ID of the attribute's variable, or ::NC_GLOBAL for a global attribute. -\param name Attribute \ref object_name. +\param name Attribute \ref object_name. -\param newname The new attribute \ref object_name. +\param newname The new attribute \ref object_name.

Example

@@ -90,8 +90,8 @@ dataset named foo.nc: #include ... int status; - int ncid; - int rh_id; + int ncid; + int rh_id; ... status = nc_open("foo.nc", NC_NOWRITE, &ncid); if (status != NC_NOERR) handle_error(status); @@ -134,13 +134,13 @@ The function nc_del_att() deletes a netCDF attribute from an open netCDF dataset. The netCDF dataset must be in define mode. \param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as +nc_create(), nc_def_grp(), or associated inquiry functions such as nc_inq_ncid(). \param varid Variable ID of the attribute's variable, or ::NC_GLOBAL for a global attribute. -\param name Attribute name. +\param name Attribute name.

Example

@@ -150,9 +150,9 @@ Units for a variable rh in an existing netCDF dataset named foo.nc: \code #include ... - int status; - int ncid; - int rh_id; + int status; + int ncid; + int rh_id; ... status = nc_open("foo.nc", NC_WRITE, &ncid); if (status != NC_NOERR) handle_error(status); @@ -160,7 +160,7 @@ Units for a variable rh in an existing netCDF dataset named foo.nc: status = nc_inq_varid (ncid, "rh", &rh_id); if (status != NC_NOERR) handle_error(status); ... - status = nc_redef(ncid); + status = nc_redef(ncid); if (status != NC_NOERR) handle_error(status); status = nc_del_att(ncid, rh_id, "Units"); if (status != NC_NOERR) handle_error(status); diff --git a/libdispatch/dattget.c b/libdispatch/dattget.c index 969c7bd3da..13a9575592 100644 --- a/libdispatch/dattget.c +++ b/libdispatch/dattget.c @@ -3,7 +3,7 @@ Attribute functions These functions read and write attributes. -Copyright 2010 University Corporation for Atmospheric +Copyright 2018 University Corporation for Atmospheric Research/Unidata. See \ref copyright file for more info. */ #include "ncdispatch.h" diff --git a/libdispatch/dattinq.c b/libdispatch/dattinq.c index e5acab0d0b..025d5c8b75 100644 --- a/libdispatch/dattinq.c +++ b/libdispatch/dattinq.c @@ -3,7 +3,7 @@ Attribute inquiry functions These functions find out about attributes. -Copyright 2011 University Corporation for Atmospheric +Copyright 2018 University Corporation for Atmospheric Research/Unidata. See \ref copyright file for more info. */ #include "ncdispatch.h" @@ -20,7 +20,7 @@ Return information about a netCDF attribute. The function nc_inq_att returns the attribute's type and length. \param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as +nc_create(), nc_def_grp(), or associated inquiry functions such as nc_inq_ncid(). \param varid Variable ID of the attribute's variable, or ::NC_GLOBAL @@ -49,12 +49,12 @@ foo.nc: \code #include ... - int status; - int ncid; - int rh_id; - nc_type vr_type, t_type; - size_t vr_len, t_len; - + int status; + int ncid; + int rh_id; + nc_type vr_type, t_type; + size_t vr_len, t_len; + ... status = nc_open("foo.nc", NC_NOWRITE, &ncid); if (status != NC_NOERR) handle_error(status); @@ -80,7 +80,7 @@ foo.nc: \author Glenn Davis, Ed Hartnett, Dennis Heimbigner */ int -nc_inq_att(int ncid, int varid, const char *name, nc_type *xtypep, +nc_inq_att(int ncid, int varid, const char *name, nc_type *xtypep, size_t *lenp) { NC* ncp; @@ -94,13 +94,13 @@ nc_inq_att(int ncid, int varid, const char *name, nc_type *xtypep, Find an attribute ID. \param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as +nc_create(), nc_def_grp(), or associated inquiry functions such as nc_inq_ncid(). \param varid Variable ID of the attribute's variable, or ::NC_GLOBAL for a global attribute. -\param name Attribute \ref object_name. +\param name Attribute \ref object_name. \param idp Pointer to location for returned attribute number that specifies which attribute this is for this variable (or which global @@ -171,7 +171,7 @@ nc_inq_attid(int ncid, int varid, const char *name, int *idp) Find the name of an attribute. \param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as +nc_create(), nc_def_grp(), or associated inquiry functions such as nc_inq_ncid(). \param varid Variable ID of the attribute's variable, or ::NC_GLOBAL @@ -183,7 +183,7 @@ number of attributes for the variable, as returned from a call to nc_inq_varnatts(). \param name Pointer to the location for the returned attribute \ref -object_name. +object_name. \section nc_inq_attname_example Example @@ -263,7 +263,7 @@ nc_inq_attname(int ncid, int varid, int attnum, char *name) Find number of global or group attributes. \param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as +nc_create(), nc_def_grp(), or associated inquiry functions such as nc_inq_ncid(). \param nattsp Pointer where number of global or group attributes will be @@ -271,7 +271,7 @@ written. \ref ignored_if_null. \section nc_inq_natts_example Example -Here is an example from +Here is an example from \code @@ -311,13 +311,13 @@ nc_inq_natts(int ncid, int *nattsp) Find the type of an attribute. \param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as +nc_create(), nc_def_grp(), or associated inquiry functions such as nc_inq_ncid(). \param varid Variable ID of the attribute's variable, or ::NC_GLOBAL for a global or group attribute. -\param name Attribute \ref object_name. +\param name Attribute \ref object_name. \param xtypep Pointer to location for returned attribute \ref data_type. @@ -368,17 +368,17 @@ nc_inq_atttype(int ncid, int varid, const char *name, nc_type *xtypep) Find the length of an attribute. \param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as +nc_create(), nc_def_grp(), or associated inquiry functions such as nc_inq_ncid(). \param varid Variable ID of the attribute's variable, or ::NC_GLOBAL for a global or group attribute. -\param name Attribute \ref object_name. +\param name Attribute \ref object_name. \param lenp Pointer to location for returned number of values currently stored in the attribute. Before using the value as a C -string, make sure it is null-terminated. \ref ignored_if_null. +string, make sure it is null-terminated. \ref ignored_if_null. \section nc_inq_attlen_example Example diff --git a/libdispatch/dattput.c b/libdispatch/dattput.c index dcc5f2e6cd..1a43b52321 100644 --- a/libdispatch/dattput.c +++ b/libdispatch/dattput.c @@ -3,7 +3,7 @@ Functions to write attributes. These functions read and write attributes. -Copyright 2010 University Corporation for Atmospheric +Copyright 2018 University Corporation for Atmospheric Research/Unidata. See \ref copyright file for more info. */ #include "ncdispatch.h" diff --git a/libdispatch/dauth.c b/libdispatch/dauth.c index 914ad6ab40..0d1085901d 100644 --- a/libdispatch/dauth.c +++ b/libdispatch/dauth.c @@ -1,6 +1,6 @@ /* -Copyright (c) 1998-2017 University Corporation for Atmospheric Research/Unidata -See LICENSE.txt for license information. +Copyright (c) 1998-2018 University Corporation for Atmospheric Research/Unidata +See COPYRIGHT for license information. */ diff --git a/libdispatch/daux.c b/libdispatch/daux.c index 1f7b40ba51..b57d4f6a17 100644 --- a/libdispatch/daux.c +++ b/libdispatch/daux.c @@ -1,6 +1,6 @@ /* -Copyright (c) 1998-2017 University Corporation for Atmospheric Research/Unidata -See LICENSE.txt for license information. +Copyright (c) 1998-2018 University Corporation for Atmospheric Research/Unidata +See COPYRIGHT for license information. */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * @@ -31,7 +31,7 @@ struct NCAUX_FIELD { char* name; nc_type fieldtype; size_t ndims; - int dimsizes[NC_MAX_VAR_DIMS]; + int dimsizes[NC_MAX_VAR_DIMS]; size_t size; size_t offset; size_t alignment; @@ -96,7 +96,7 @@ ncaux_reclaim_data(int ncid, int xtype, void* memory, size_t count) size_t typesize = 0; size_t i; Position offset; - + if(ncid < 0 || xtype < 0 || (memory == NULL && count > 0) || xtype == NC_NAT) @@ -110,7 +110,7 @@ ncaux_reclaim_data(int ncid, int xtype, void* memory, size_t count) if((stat=reclaim_datar(ncid,xtype,typesize,&offset))) /* reclaim one instance */ break; } - + done: return stat; } @@ -120,7 +120,7 @@ static int reclaim_datar(int ncid, int xtype, size_t typesize, Position* offset) { int stat = NC_NOERR; - + switch (xtype) { case NC_CHAR: case NC_BYTE: case NC_UBYTE: case NC_SHORT: case NC_USHORT: @@ -147,7 +147,7 @@ reclaim_datar(int ncid, int xtype, size_t typesize, Position* offset) } return stat; } - + #ifdef USE_NETCDF4 static ptrdiff_t @@ -162,7 +162,7 @@ static int reclaim_usertype(int ncid, int xtype, Position* offset) { int stat = NC_NOERR; - size_t size; + size_t size; nc_type basetype; size_t nfields; int klass; @@ -250,7 +250,7 @@ reclaim_compound(int ncid, int xtype, size_t cmpdsize, size_t nfields, Position* for(i=0;ioffset = saveoffset; @@ -278,13 +278,13 @@ ncaux_begin_compound(int ncid, const char *name, int alignmode, void** tagp) struct NCAUX_CMPD* cmpd = NULL; if(tagp) *tagp = NULL; - + cmpd = (struct NCAUX_CMPD*)calloc(1,sizeof(struct NCAUX_CMPD)); if(cmpd == NULL) {status = NC_ENOMEM; goto fail;} cmpd->ncid = ncid; cmpd->mode = alignmode; cmpd->nfields = 0; - cmpd->name = strdup(name); + cmpd->name = strdup(name); if(cmpd->name == NULL) {status = NC_ENOMEM; goto fail;} if(tagp) { @@ -350,7 +350,7 @@ ncaux_add_field(void* tag, const char *name, nc_type field_type, field = &cmpd->fields[cmpd->nfields+1]; field->name = strdup(name); field->fieldtype = field_type; - if(field->name == NULL) {status = NC_ENOMEM; goto done;} + if(field->name == NULL) {status = NC_ENOMEM; goto done;} field->ndims = (size_t)ndims; memcpy(field->dimsizes,dimsizes,sizeof(int)*field->ndims); cmpd->nfields++; @@ -458,7 +458,7 @@ findfirstfield(int ncid, nc_type xtype) int status = NC_NOERR; nc_type fieldtype = xtype; if(xtype <= NC_MAX_ATOMIC_TYPE) goto done; - + status = nc_inq_compound_fieldtype(ncid, xtype, 0, &fieldtype); if(status != NC_NOERR) goto done; fieldtype = findfirstfield(ncid,fieldtype); @@ -494,7 +494,7 @@ computefieldinfo(struct NCAUX_CMPD* cmpd) /* Assign the sizes for the fields */ for(i=0;infields;i++) { - struct NCAUX_FIELD* field = &cmpd->fields[i]; + struct NCAUX_FIELD* field = &cmpd->fields[i]; status = nc_inq_type(cmpd->ncid,field->fieldtype,NULL,&field->size); if(status != NC_NOERR) goto done; totaldimsize = dimproduct(field->ndims,field->dimsizes); @@ -513,7 +513,7 @@ computefieldinfo(struct NCAUX_CMPD* cmpd) break; case NC_ENUM: field->alignment = ncaux_type_alignment(firsttype,cmpd->ncid); - break; + break; case NC_VLEN: /*fall thru*/ case NC_COMPOUND: field->alignment = ncaux_type_alignment(firsttype,cmpd->ncid); @@ -535,5 +535,3 @@ computefieldinfo(struct NCAUX_CMPD* cmpd) } #endif /*USE_NETCDF4*/ - - diff --git a/libdispatch/dcompound.c b/libdispatch/dcompound.c index 902f0a9e64..2399cc7418 100644 --- a/libdispatch/dcompound.c +++ b/libdispatch/dcompound.c @@ -1,7 +1,7 @@ /*! \file Functions for Compound Types - Copyright 2011 University Corporation for Atmospheric + Copyright 2018 University Corporation for Atmospheric Research/Unidata. See \ref copyright file for more info. */ #include "ncdispatch.h" @@ -21,9 +21,9 @@ nc_insert_compound(). Call nc_insert_compound() once for each field you wish to insert into the compound type. \param ncid \ref ncid -\param size The size, in bytes, of the compound type. +\param size The size, in bytes, of the compound type. \param name \ref object_name of the created type. -\param typeidp The type ID of the new type is copied here. +\param typeidp The type ID of the new type is copied here. \returns ::NC_NOERR No error. \returns ::NC_EBADID Bad \ref ncid. @@ -35,7 +35,7 @@ you wish to insert into the compound type. \returns ::NC_ENOTNC4 This file was created with the strict netcdf-3 flag, therefore netcdf-4 operations are not allowed. (see nc_open). \returns ::NC_EHDFERR An error was reported by the HDF5 layer. \returns ::NC_EPERM Attempt to write to a read-only file. -\returns ::NC_ENOTINDEFINE Not in define mode. +\returns ::NC_ENOTINDEFINE Not in define mode. \section nc_def_compound_example Example @@ -46,7 +46,7 @@ int i1; int i2; }; struct s1 data[DIM_LEN], data_in[DIM_LEN]; - + if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; if (nc_def_compound(ncid, sizeof(struct s1), SVC_REC, &typeid)) ERR; if (nc_insert_compound(ncid, typeid, BATTLES_WITH_KLINGONS, @@ -60,7 +60,7 @@ if (nc_close(ncid)) ERR; \endcode */ int -nc_def_compound(int ncid, size_t size, const char *name, +nc_def_compound(int ncid, size_t size, const char *name, nc_type *typeidp) { NC* ncp; @@ -82,7 +82,7 @@ nc_def_compound(), or nc_inq_var(). \param offset Offset in byte from the beginning of the compound type for this field. -\param field_typeid The type of the field to be inserted. +\param field_typeid The type of the field to be inserted. \returns ::NC_NOERR No error. \returns ::NC_EBADID Bad \ref ncid. @@ -93,10 +93,10 @@ for this field. \returns ::NC_ENOTNC4 Not an netCDF-4 file, or classic model enabled. \returns ::NC_EHDFERR An error was reported by the HDF5 layer. \returns ::NC_EPERM Attempt to write to a read-only file. -\returns ::NC_ENOTINDEFINE Not in define mode. +\returns ::NC_ENOTINDEFINE Not in define mode. */ int -nc_insert_compound(int ncid, nc_type xtype, const char *name, +nc_insert_compound(int ncid, nc_type xtype, const char *name, size_t offset, nc_type field_typeid) { NC *ncp; @@ -119,7 +119,7 @@ nc_def_compound(), or nc_inq_var(). \param offset Offset in byte from the beginning of the compound type for this field. -\param field_typeid The type of the field to be inserted. +\param field_typeid The type of the field to be inserted. \param ndims Number of dimensions in array. @@ -135,11 +135,11 @@ for this field. \returns ::NC_ENOTNC4 Not an netCDF-4 file, or classic model enabled. \returns ::NC_EHDFERR An error was reported by the HDF5 layer. \returns ::NC_EPERM Attempt to write to a read-only file. -\returns ::NC_ENOTINDEFINE Not in define mode. +\returns ::NC_ENOTINDEFINE Not in define mode. */ int -nc_insert_array_compound(int ncid, nc_type xtype, const char *name, - size_t offset, nc_type field_typeid, +nc_insert_array_compound(int ncid, nc_type xtype, const char *name, + size_t offset, nc_type field_typeid, int ndims, const int *dim_sizes) { NC* ncp; @@ -172,7 +172,7 @@ placed here. \ref ignored_if_null. \returns ::NC_EHDFERR An error was reported by the HDF5 layer. */ int -nc_inq_compound(int ncid, nc_type xtype, char *name, +nc_inq_compound(int ncid, nc_type xtype, char *name, size_t *sizep, size_t *nfieldsp) { int class = 0; @@ -206,7 +206,7 @@ nc_inq_compound_name(int ncid, nc_type xtype, char *name) } /** \ingroup user_types -Learn the size of a compound type. +Learn the size of a compound type. \param ncid \ref ncid @@ -229,7 +229,7 @@ nc_inq_compound_size(int ncid, nc_type xtype, size_t *sizep) } /** \ingroup user_types -Learn the number of fields in a compound type. +Learn the number of fields in a compound type. \param ncid \ref ncid @@ -252,7 +252,7 @@ nc_inq_compound_nfields(int ncid, nc_type xtype, size_t *nfieldsp) } /** \ingroup user_types -Get information about one of the fields of a compound type. +Get information about one of the fields of a compound type. \param ncid \ref ncid @@ -284,9 +284,9 @@ field. \ref ignored_if_null. \returns ::NC_EHDFERR An error was reported by the HDF5 layer. */ int -nc_inq_compound_field(int ncid, nc_type xtype, int fieldid, - char *name, size_t *offsetp, - nc_type *field_typeidp, int *ndimsp, +nc_inq_compound_field(int ncid, nc_type xtype, int fieldid, + char *name, size_t *offsetp, + nc_type *field_typeidp, int *ndimsp, int *dim_sizesp) { NC* ncp; @@ -298,7 +298,7 @@ nc_inq_compound_field(int ncid, nc_type xtype, int fieldid, } /** \ingroup user_types -Get information about one of the fields of a compound type. +Get information about one of the fields of a compound type. \param ncid \ref ncid @@ -318,7 +318,7 @@ ignored_if_null. \returns ::NC_EHDFERR An error was reported by the HDF5 layer. */ int -nc_inq_compound_fieldname(int ncid, nc_type xtype, int fieldid, +nc_inq_compound_fieldname(int ncid, nc_type xtype, int fieldid, char *name) { NC* ncp; @@ -330,7 +330,7 @@ nc_inq_compound_fieldname(int ncid, nc_type xtype, int fieldid, } /** \ingroup user_types -Get information about one of the fields of a compound type. +Get information about one of the fields of a compound type. \param ncid \ref ncid @@ -350,7 +350,7 @@ ignored_if_null. \returns ::NC_EHDFERR An error was reported by the HDF5 layer. */ int -nc_inq_compound_fieldoffset(int ncid, nc_type xtype, int fieldid, +nc_inq_compound_fieldoffset(int ncid, nc_type xtype, int fieldid, size_t *offsetp) { NC* ncp; @@ -360,7 +360,7 @@ nc_inq_compound_fieldoffset(int ncid, nc_type xtype, int fieldid, } /** \ingroup user_types -Get information about one of the fields of a compound type. +Get information about one of the fields of a compound type. \param ncid \ref ncid @@ -380,7 +380,7 @@ field. \ref ignored_if_null. \returns ::NC_EHDFERR An error was reported by the HDF5 layer. */ int -nc_inq_compound_fieldtype(int ncid, nc_type xtype, int fieldid, +nc_inq_compound_fieldtype(int ncid, nc_type xtype, int fieldid, nc_type *field_typeidp) { NC* ncp; @@ -390,7 +390,7 @@ nc_inq_compound_fieldtype(int ncid, nc_type xtype, int fieldid, } /** \ingroup user_types -Get information about one of the fields of a compound type. +Get information about one of the fields of a compound type. \param ncid \ref ncid @@ -410,7 +410,7 @@ field. \ref ignored_if_null. \returns ::NC_EHDFERR An error was reported by the HDF5 layer. */ int -nc_inq_compound_fieldndims(int ncid, nc_type xtype, int fieldid, +nc_inq_compound_fieldndims(int ncid, nc_type xtype, int fieldid, int *ndimsp) { NC* ncp; @@ -420,7 +420,7 @@ nc_inq_compound_fieldndims(int ncid, nc_type xtype, int fieldid, } /** \ingroup user_types -Get information about one of the fields of a compound type. +Get information about one of the fields of a compound type. \param ncid \ref ncid @@ -440,7 +440,7 @@ field. \ref ignored_if_null. \returns ::NC_EHDFERR An error was reported by the HDF5 layer. */ int -nc_inq_compound_fielddim_sizes(int ncid, nc_type xtype, int fieldid, +nc_inq_compound_fielddim_sizes(int ncid, nc_type xtype, int fieldid, int *dim_sizesp) { NC *ncp; @@ -472,7 +472,7 @@ field. \ref ignored_if_null. \returns ::NC_EHDFERR An error was reported by the HDF5 layer. */ int -nc_inq_compound_fieldindex(int ncid, nc_type xtype, const char *name, +nc_inq_compound_fieldindex(int ncid, nc_type xtype, const char *name, int *fieldidp) { NC* ncp; @@ -481,9 +481,3 @@ nc_inq_compound_fieldindex(int ncid, nc_type xtype, const char *name, return ncp->dispatch->inq_compound_fieldindex(ncid,xtype,name,fieldidp); } /*! \} */ /* End of named group ...*/ - - - - - - diff --git a/libdispatch/dcopy.c b/libdispatch/dcopy.c index 0c73c40bd1..8ef13cb485 100644 --- a/libdispatch/dcopy.c +++ b/libdispatch/dcopy.c @@ -1,6 +1,6 @@ /** * @file - * Copyright 2010 University Corporation for Atmospheric + * Copyright 2018 University Corporation for Atmospheric * Research/Unidata. See COPYRIGHT file for more info. * * This file has the var and att copy functions. @@ -13,7 +13,7 @@ #ifdef USE_NETCDF4 /** * @internal Compare two netcdf types for equality. Must have the - * ncids as well, to find user-defined types. + * ncids as well, to find user-defined types. * * @param ncid1 File ID. * @param typeid1 Type ID. @@ -152,7 +152,7 @@ NC_compare_nc_types(int ncid1, int typeid1, int ncid2, int typeid2, /** * @internal Recursively hunt for a netCDF type id. (Code from - * nc4internal.c); Return matching typeid or 0 if not found. + * nc4internal.c); Return matching typeid or 0 if not found. * * @param ncid1 File ID. * @param tid1 Type ID. @@ -226,7 +226,7 @@ NC_rec_find_nc_type(int ncid1, nc_type tid1, int ncid2, nc_type* tid2) /** * @internal Given a type in one file, find its equal (if any) in - * another file. It sounds so simple, but it's a real pain! + * another file. It sounds so simple, but it's a real pain! * * @param ncid1 File ID. * @param xtype1 Type ID. diff --git a/libdispatch/ddim.c b/libdispatch/ddim.c index 93e7364062..4abcc4e382 100644 --- a/libdispatch/ddim.c +++ b/libdispatch/ddim.c @@ -3,7 +3,7 @@ Dimension functions These functions define and inquire about dimensions. -Copyright 2010 University Corporation for Atmospheric +Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for more info. */ diff --git a/libdispatch/ddispatch.c b/libdispatch/ddispatch.c index 1da5846ca7..06359bc12a 100644 --- a/libdispatch/ddispatch.c +++ b/libdispatch/ddispatch.c @@ -1,5 +1,5 @@ /* -Copyright (c) 1998-2017 University Corporation for Atmospheric Research/Unidata +Copyright (c) 1998-2018 University Corporation for Atmospheric Research/Unidata See LICENSE.txt for license information. */ @@ -212,7 +212,7 @@ NC_urlmodel(const char* path, int mode, char** newurl) found = 1; break; } - } + } if(found) { model = protolist->model; /* Substitute the protocol in any case */ @@ -231,7 +231,7 @@ NC_urlmodel(const char* path, int mode, char** newurl) model = NC_FORMATX_DAP2; else if((match=ncurilookup(url,"dap4")) != NULL || strcmp(proto,"dap4") == 0) model = NC_FORMATX_DAP4; - else + else model = 0; /* Still don't know */ } if(model == 0) {/* Last resort: use the mode */ diff --git a/libdispatch/denum.c b/libdispatch/denum.c index dc8a2b057f..5e482bdb2c 100644 --- a/libdispatch/denum.c +++ b/libdispatch/denum.c @@ -1,7 +1,7 @@ /*! \file Functions for Enum Types - Copyright 2011 University Corporation for Atmospheric + Copyright 2018 University Corporation for Atmospheric Research/Unidata. See \ref copyright file for more info. */ #include "ncdispatch.h" diff --git a/libdispatch/derror.c b/libdispatch/derror.c index 6a2b83fc0a..b6d066ec1c 100644 --- a/libdispatch/derror.c +++ b/libdispatch/derror.c @@ -3,7 +3,7 @@ Error messages and library version. These functions return the library version, and error messages. -Copyright 2010 University Corporation for Atmospheric +Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for more info. */ diff --git a/libdispatch/dfile.c b/libdispatch/dfile.c index 0447cc110b..c66683f6e2 100644 --- a/libdispatch/dfile.c +++ b/libdispatch/dfile.c @@ -6,12 +6,15 @@ * These functions end up calling functions in one of the dispatch * layers (netCDF-4, dap server, etc). * - * Copyright 2010 University Corporation for Atmospheric + * Copyright 2018 University Corporation for Atmospheric * Research/Unidata. See COPYRIGHT file for more info. */ #include "config.h" #include +#ifdef HAVE_STRING_H +#include +#endif #ifdef HAVE_SYS_RESOURCE_H #include #endif @@ -26,6 +29,11 @@ #include /* lseek() */ #endif +#ifdef HAVE_STDIO_H +#include +#endif +extern int fileno(FILE*); + #include "ncdispatch.h" #include "netcdf_mem.h" #include "ncwinpath.h" @@ -2358,7 +2366,7 @@ NC_open(const char *path0, int omode, int basepe, size_t *chunksizehintp, dispatcher = NCP_dispatch_table; break; #endif -#if defined(USE_NETCDF4) +#if defined(USE_HDF5) case NC_FORMATX_NC4: dispatcher = HDF5_dispatch_table; break; diff --git a/libdispatch/dfilter.c b/libdispatch/dfilter.c index 8c4360722b..e48eddfcb8 100644 --- a/libdispatch/dfilter.c +++ b/libdispatch/dfilter.c @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ diff --git a/libdispatch/dgroup.c b/libdispatch/dgroup.c index 8b1fe4b443..c6f553680e 100644 --- a/libdispatch/dgroup.c +++ b/libdispatch/dgroup.c @@ -1,7 +1,7 @@ /*! \file Functions for netCDF-4 features. -Copyright 2010 University Corporation for Atmospheric +Copyright 2018 University Corporation for Atmospheric Research/Unidata. See \ref copyright file for more info. */ #include "ncdispatch.h" diff --git a/libdispatch/dinternal.c b/libdispatch/dinternal.c index 4783042dce..c94e2f3ccc 100644 --- a/libdispatch/dinternal.c +++ b/libdispatch/dinternal.c @@ -1,7 +1,7 @@ /*! \internal Public functions from dispatch table. -Copyright 2010 University Corporation for Atmospheric +Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for more info. */ diff --git a/libdispatch/doffsets.c b/libdispatch/doffsets.c index 0d438c0c8a..e366a2d442 100644 --- a/libdispatch/doffsets.c +++ b/libdispatch/doffsets.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/offsets.c,v 1.1 2009/09/25 18:22:40 dmh Exp $ *********************************************************************/ diff --git a/libdispatch/dopaque.c b/libdispatch/dopaque.c index b9065afe52..3a77e79423 100644 --- a/libdispatch/dopaque.c +++ b/libdispatch/dopaque.c @@ -1,7 +1,7 @@ /*! \file Functions for Opaque Types - Copyright 2011 University Corporation for Atmospheric + Copyright 2018 University Corporation for Atmospheric Research/Unidata. See \ref copyright file for more info. */ #include "ncdispatch.h" diff --git a/libdispatch/dparallel.c b/libdispatch/dparallel.c index 0f3c3a1f4f..730ba94b3a 100644 --- a/libdispatch/dparallel.c +++ b/libdispatch/dparallel.c @@ -1,4 +1,4 @@ -/* Copyright 2010 University Corporation for Atmospheric +/* Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for more info. */ /** * @file @@ -7,6 +7,10 @@ */ #include "config.h" #include "ncdispatch.h" +#ifdef HAVE_STDIO_H +#include +#endif +extern int fileno(FILE*); /** Create a netCDF file for parallel I/O. diff --git a/libdispatch/drc.c b/libdispatch/drc.c index 2f7c5bf25b..2ad784472d 100644 --- a/libdispatch/drc.c +++ b/libdispatch/drc.c @@ -1,6 +1,6 @@ /* -Copyright (c) 1998-2017 University Corporation for Atmospheric Research/Unidata -See LICENSE.txt for license information. +Copyright (c) 1998-2018 University Corporation for Atmospheric Research/Unidata +See COPYRIGHT for license information. */ #include "config.h" diff --git a/libdispatch/dstring.c b/libdispatch/dstring.c index 2a3cece0d5..843c19da9e 100644 --- a/libdispatch/dstring.c +++ b/libdispatch/dstring.c @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ /* $Id: string.c,v 1.76 2010/05/26 21:43:33 dmh Exp $ */ @@ -319,7 +319,7 @@ strdup(const char* s) */ #ifndef HAVE_STRLCAT -#ifndef _MSC_VER /* We will use strcat_s */ +#ifndef _WIN32 /* We will use strcat_s */ /* * Appends src to string dst of size dsize (unlike strncat, dsize is the * full size of dst, not space left). At most dsize-1 characters @@ -327,7 +327,7 @@ strdup(const char* s) * Returns strlen(src) + MIN(dsize, strlen(initial dst)). * If retval >= dsize, truncation occurred. */ -size_t +EXTERNL size_t strlcat(char* dst, const char* src, size_t dsize) { const char *odst = dst; @@ -354,5 +354,28 @@ strlcat(char* dst, const char* src, size_t dsize) return(dlen + (src - osrc)); /* count does not include NUL */ } -#endif /*!_MSC_VER*/ +#endif /*!_WIN32*/ #endif /*!HAVE_STRLCAT*/ + +/* It turns out the gcc -ansi under cygwin does + not define the following function(s) in . +*/ +#ifndef HAVE_STRDUP +#if 0 +#if __STDC__ == 1 /*supposed to be same as -ansi flag */ +/* + * Duplicate the given string + */ +char* +strdup(const char* s) +{ + size_t len = strlen(s); + char* news; + if((news = malloc(len + 1))) + memcpy(news, s, len+1); + return news; +} +#endif /*__STDC__*/ +#endif /*0*/ +#endif /*HAVE_STRDUP*/ + diff --git a/libdispatch/dtype.c b/libdispatch/dtype.c index 82fafb475d..3de208c1e0 100644 --- a/libdispatch/dtype.c +++ b/libdispatch/dtype.c @@ -1,7 +1,7 @@ /*! \file Functions for User-Defined Types - Copyright 2011 University Corporation for Atmospheric + Copyright 2018 University Corporation for Atmospheric Research/Unidata. See \ref copyright file for more info. */ #include "ncdispatch.h" diff --git a/libdispatch/dutf8.c b/libdispatch/dutf8.c index c7550aa238..f8e0d6b9a0 100644 --- a/libdispatch/dutf8.c +++ b/libdispatch/dutf8.c @@ -1,5 +1,5 @@ /* - * Copyright 2017, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ diff --git a/libdispatch/dutil.c b/libdispatch/dutil.c index aa52bc7f6a..927c6d6901 100644 --- a/libdispatch/dutil.c +++ b/libdispatch/dutil.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ @@ -25,6 +25,8 @@ #include "nclog.h" #include "ncwinpath.h" +extern int mkstemp(char *template); + #define NC_MAX_PATH 4096 #define LBRACKET '[' diff --git a/libdispatch/dv2i.c b/libdispatch/dv2i.c index c7c05a96d2..98b9a6cd69 100644 --- a/libdispatch/dv2i.c +++ b/libdispatch/dv2i.c @@ -1,7 +1,7 @@ /** \file The V2 API Functions. -Copyright 1996, University Corporation for Atmospheric Research +Copyright 2018, University Corporation for Atmospheric Research See \ref copyright file for copying and redistribution conditions. */ diff --git a/libdispatch/dvar.c b/libdispatch/dvar.c index 655667285e..50028ac786 100644 --- a/libdispatch/dvar.c +++ b/libdispatch/dvar.c @@ -1102,7 +1102,7 @@ Warning: this function is only defined if the type of the variable is an atomic integer or float type. This function may only be called after the variable is defined, but -before nc_enddef is called. +before nc_enddef is called. @param[in] ncid NetCDF ID, from a previous call to nc_open or nc_create. diff --git a/libdispatch/dvarget.c b/libdispatch/dvarget.c index 8ccf8909d7..0a18108092 100644 --- a/libdispatch/dvarget.c +++ b/libdispatch/dvarget.c @@ -1,7 +1,7 @@ /*! \file Functions for getting data from variables. -Copyright 2011 University Corporation for Atmospheric +Copyright 2018 University Corporation for Atmospheric Research/Unidata. See \ref copyright file for more info. */ diff --git a/libdispatch/dvarput.c b/libdispatch/dvarput.c index 86c09e54bc..5d43b59213 100644 --- a/libdispatch/dvarput.c +++ b/libdispatch/dvarput.c @@ -1,7 +1,7 @@ /*! \file dvarput.c Functions for writing data to variables. -Copyright 2010 University Corporation for Atmospheric +Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for more info. */ diff --git a/libdispatch/dvlen.c b/libdispatch/dvlen.c index d14ad6972e..5236f28cc5 100644 --- a/libdispatch/dvlen.c +++ b/libdispatch/dvlen.c @@ -1,7 +1,7 @@ /*! \file Functions for VLEN Types - Copyright 2011 University Corporation for Atmospheric + Copyright 2018 University Corporation for Atmospheric Research/Unidata. See \ref copyright file for more info. */ #include "ncdispatch.h" diff --git a/libdispatch/dwinpath.c b/libdispatch/dwinpath.c index b83ef543ce..6c6166ac39 100644 --- a/libdispatch/dwinpath.c +++ b/libdispatch/dwinpath.c @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ @@ -21,6 +21,8 @@ #include "ncexternl.h" #include "ncwinpath.h" +extern char *realpath(const char *path, char *resolved_path); + #undef PATHFORMAT /* @@ -155,7 +157,7 @@ static char* makeabsolute(const char* relpath) { char* path = NULL; -#ifdef _MSC_VER +#ifdef _WIN32 path = _fullpath(NULL,relpath,8192); #else path = realpath(relpath, NULL); diff --git a/libdispatch/json.c b/libdispatch/json.c index 4196885d1f..2fe194550e 100644 --- a/libdispatch/json.c +++ b/libdispatch/json.c @@ -1,11 +1,11 @@ -/* Copyright 2016, UCAR/Unidata. - See the LICENSE file for more information. +/* Copyright 2018, UCAR/Unidata. + See the COPYRIGHT file for more information. */ #ifndef NCJSON_INC #define NCJSON_INC 1 -#define NCJ_DICT 1 +#define NCJ_DICT 1 #define NCJ_LIST 2 #define NCJ_WORD 3 #define NCJ_NUMBER 4 @@ -77,7 +77,7 @@ NCjsonparse(char* text, NCjson** treep) static int NCJyytext(NCJparser* parser, char* start, ptrdiff_t pdlen) { - size_t len = (size_t)pdlen; + size_t len = (size_t)pdlen; if(parser->yytext == NULL) parser->yytext = (char*)malloc(len+1); else @@ -133,13 +133,13 @@ NCJlex(NCJparser* parser) for(;;) { c = *parser->pos++; if(c == NCJ_QUOTE || c == NCJ_NUL) break; - last++; + last++; } if(c == NCJ_NUL) { parser->errno = NCJ_ESTRING; token = NCJ_ERR; goto done; - } + } if(!NCJyytext(parser,start,(next - start))) goto done; token = NCJ_STRING; } else { /* single char token */ @@ -147,7 +147,7 @@ NCJlex(NCJparser* parser) } done: if(parser->errno) token = NCJ_ERR; - return token; + return token; } /* Simple recursive descent */ @@ -174,7 +174,7 @@ NCJparseR(NCJparser* parser, NCjson** listp) default: parser->errno = NCJ_EBADTOKEN; } - return NULL; + return NULL; } static NCjson* diff --git a/libdispatch/nc.c b/libdispatch/nc.c index 9683c79257..f58476afdd 100644 --- a/libdispatch/nc.c +++ b/libdispatch/nc.c @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ @@ -91,7 +91,7 @@ nc_set_default_format(int format, int *old_formatp) if (format == NC_FORMAT_CDF5) return NC_ENOTBUILT; #endif -#ifdef USE_NETCDF4 +#ifdef USE_HDF5 if (format != NC_FORMAT_CLASSIC && format != NC_FORMAT_64BIT_OFFSET && format != NC_FORMAT_NETCDF4 && format != NC_FORMAT_NETCDF4_CLASSIC && format != NC_FORMAT_CDF5) diff --git a/libdispatch/ncbytes.c b/libdispatch/ncbytes.c index 7d0aa904c3..f5a731ae5b 100644 --- a/libdispatch/ncbytes.c +++ b/libdispatch/ncbytes.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include diff --git a/libdispatch/nchashmap.c b/libdispatch/nchashmap.c index ff45dcfb40..0a6d8a1cec 100644 --- a/libdispatch/nchashmap.c +++ b/libdispatch/nchashmap.c @@ -1,5 +1,5 @@ /* -Copyright (c) 1998-2017 University Corporation for Atmospheric Research/Unidata +Copyright (c) 1998-2018 University Corporation for Atmospheric Research/Unidata See LICENSE.txt for license information. */ diff --git a/libdispatch/nclist.c b/libdispatch/nclist.c index 679c1b1746..c901c78f6f 100644 --- a/libdispatch/nclist.c +++ b/libdispatch/nclist.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include #include @@ -113,7 +113,7 @@ nclistset(NClist* l, size_t index, void* elem) if(l == NULL) return FALSE; if(!nclistsetalloc(l,index+1)) return FALSE; if(index >= l->length) { - if(!nclistsetlength(l,index+1)) return FALSE; + if(!nclistsetlength(l,index+1)) return FALSE; } l->content[index] = elem; return TRUE; @@ -147,7 +147,7 @@ void* nclistpop(NClist* l) { if(l == NULL || l->length == 0) return NULL; - l->length--; + l->length--; return l->content[l->length]; } @@ -168,7 +168,7 @@ nclistremove(NClist* l, size_t i) elem = l->content[i]; for(i+=1;icontent[i-1] = l->content[i]; l->length--; - return elem; + return elem; } /* Duplicate and return the content (null terminate) */ @@ -212,7 +212,7 @@ nclistelemremove(NClist* l, void* elem) } -/* Extends nclist to include a unique operator +/* Extends nclist to include a unique operator which remove duplicate values; NULL values removed return value is always 1. */ @@ -229,7 +229,7 @@ nclistunique(NClist* l) for(j=i+1;jpath,path)==0) { f = nc_filelist[i]; break; - } + } } } return f; @@ -126,4 +126,3 @@ iterate_NCList(int index, NC** ncp) if(ncp) *ncp = nc_filelist[index]; return NC_NOERR; } - diff --git a/libdispatch/nclog.c b/libdispatch/nclog.c index f43d23dff9..bcf94e3103 100644 --- a/libdispatch/nclog.c +++ b/libdispatch/nclog.c @@ -1,11 +1,10 @@ /********************************************************************* - * Copyright 2010, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header$ *********************************************************************/ #include "config.h" - #ifdef _MSC_VER #include #endif @@ -18,6 +17,8 @@ #include #endif +extern FILE* fdopen(int fd, const char *mode); + #include "nclog.h" #define PREFIXLEN 8 diff --git a/libdispatch/nctime.c b/libdispatch/nctime.c index 07c9b17087..aed5ac9842 100644 --- a/libdispatch/nctime.c +++ b/libdispatch/nctime.c @@ -1,10 +1,10 @@ /********************************************************************* - * Copyright 2008, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id: nctime.c,v 1.9 2010/05/05 22:15:39 dmh Exp $ *********************************************************************/ -/* +/* * This code was extracted with permission from the CDMS time * conversion and arithmetic routines developed by Bob Drach, Lawrence * Livermore National Laboratory as part of the cdtime library. Russ @@ -58,7 +58,7 @@ static void cdError(char *fmt, ...) { va_list args; - + cuErrorOccurred = 1; if(cuErrOpts & CU_VERBOSE){ va_start(args,fmt); @@ -84,11 +84,11 @@ static int days_sum[12] = {0,31,59,90,120,151,181,212,243,273,304,334}; * date->year (long) (year since 0 BC) * date->timeType (CdTimetype) (time type) * date->baseYear base year for relative times - * Output: - * date->month (short) (month in year) + * Output: + * date->month (short) (month in year) * date->day (short) (day in month) * - * + * * Derived from NRL NEONS V3.6. */ @@ -131,14 +131,14 @@ CdMonthDay(int *doy, CdTime *date) } /* Compute day-of-year from year, month and day - * + * * Input: * date->year (long) (year since 0 BC) * date->month (short) (month in year) * date->day (short) (day in month) * date->baseYear base year for relative times * Output: doy (int) (day-of-year) - * + * * Derived from NRL NEONS V3.6 */ @@ -152,7 +152,7 @@ CdDayOfYear(CdTime *date, int *doy) month = date->month; if (month < 1 || month > 12) { cdError( "Day-of-year error; month: %d\n", month); - month = 1; + month = 1; } if(!(date->timeType & CdChronCal)) /* Ignore year for Clim calendar */ @@ -173,14 +173,14 @@ CdDayOfYear(CdTime *date, int *doy) /* Convert epochal time (hours since 00 jan 1, 1970) * to human time (structured) - * - * Input: + * + * Input: * etime = epochal time representation * timeType = time type (e.g., CdChron, CdClim, etc.) as defined in cdms.h * baseYear = base real, used for relative time types only - * + * * Output: htime = human (structured) time representation - * + * * Derived from NRL Neons V3.6 */ void @@ -404,7 +404,7 @@ cdDiffGregorian(cdCompTime ca, cdCompTime cb){ /* Return -1, 0, 1 as ca is less than, equal to, */ /* or greater than cb, respectively. */ -static int +static int cdCompCompare(cdCompTime ca, cdCompTime cb){ int test; @@ -469,7 +469,7 @@ CdDivDelTime(double begEtm, double endEtm, CdDeltaTime delTime, CdTimeType timeT long delMonths, range; CdTime bhtime, ehtime; int hoursInYear; - + extern void Cde2h(double etime, CdTimeType timeType, long baseYear, CdTime *htime); switch(delTime.units){ @@ -610,11 +610,11 @@ cdToOldTimetype(cdCalenType newtype, CdTimeType* oldtype) } /* Convert human time to epochal time (hours since 00 jan 1, 1970) - * + * * Input: htime = human time representation - * + * * Output: etime = epochal time representation - * + * * Derived from NRL Neons V3.6 */ void @@ -628,7 +628,7 @@ Cdh2e(CdTime *htime, double *etime) int daysInYear; /* days in non-leap year */ CdDayOfYear(htime,&doy); - + day_cnt = 0; baseYear = ((htime->timeType) & CdBase1970) ? 1970 : htime->baseYear; @@ -641,7 +641,7 @@ Cdh2e(CdTime *htime, double *etime) daysInLeapYear = ((htime->timeType) & Cd365) ? 366 : 360; daysInYear = ((htime->timeType) & Cd365) ? 365 : 360; } - + if (year > baseYear) { for (ytemp = year - 1; ytemp >= baseYear; ytemp--) { day_cnt += ISLEAP(ytemp,htime->timeType) ? daysInLeapYear : daysInYear; @@ -650,7 +650,7 @@ Cdh2e(CdTime *htime, double *etime) for (ytemp = year; ytemp < baseYear; ytemp++) { day_cnt -= ISLEAP(ytemp,htime->timeType) ? daysInLeapYear : daysInYear; } - } + } *etime = (double) (day_cnt + doy - 1) * 24. + htime->hour; return; } @@ -687,7 +687,7 @@ cdChar2Comp(cdCalenType timetype, char* chartime, cdCompTime* comptime) comptime->month = CD_NULL_MONTH; comptime->day = CD_NULL_DAY; comptime->hour = CD_NULL_HOUR; - + if(timetype & cdStandardCal){ nconv = sscanf(chartime,"%ld-%hd-%hd %d:%d:%lf",&year,&month,&day,&ihr,&imin,&sec); if(nconv==EOF || nconv==0){ @@ -787,7 +787,7 @@ cdComp2Rel(cdCalenType timetype, cdCompTime comptime, char* relunits, double* re cdUnitTime unit; double base_etm, etm, delta; long ndel, hoursInYear; - + /* Parse the relunits */ if(cdParseRelunits(timetype, relunits, &unit, &base_comptime)) return; @@ -807,7 +807,7 @@ cdComp2Rel(cdCalenType timetype, cdCompTime comptime, char* relunits, double* re default: break; } } - + /* Convert basetime to epochal */ humantime.year = base_comptime.year; humantime.month = base_comptime.month; @@ -1071,7 +1071,7 @@ cdRel2Comp(cdCalenType timetype, char* relunits, double reltime, cdCompTime* com /* Convert back to human, then comptime. */ else if(baseunits == cdHour){ Cde2h(base_etm+delta, old_timetype, 1970, &humantime); - + } comptime->year = humantime.year; comptime->month = humantime.month; @@ -1091,7 +1091,7 @@ cdComp2Iso(cdCalenType timetype, int separator, cdCompTime comptime, char* time) if(cdValidateTime(timetype,comptime)) return; - + ihr = (int)comptime.hour; dtmp = 60.0 * (comptime.hour - (double)ihr); imin = (int)dtmp; diff --git a/libdispatch/ncuri.c b/libdispatch/ncuri.c index 7e13abdba1..03a7419654 100644 --- a/libdispatch/ncuri.c +++ b/libdispatch/ncuri.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2010, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header$ *********************************************************************/ diff --git a/libdispatch/netcdf.m4 b/libdispatch/netcdf.m4 index f57742b084..1a58df0278 100644 --- a/libdispatch/netcdf.m4 +++ b/libdispatch/netcdf.m4 @@ -1,12 +1,12 @@ /* - Copyright 2010 University Corporation for Atmospheric + Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for more info. This file defines most of the netcdf API in terms of the dispatch functions along with a few functions that are overlays over the dispatch functions. - "$Id: netcdf.m4,v 1.16 2010/06/01 15:34:50 ed Exp $" + "$Id: netcdf.m4,v 1.16 2010/06/01 15:34:50 ed Exp $" */ #include "ncdispatch.h" @@ -588,4 +588,3 @@ NC_PUT_ATT(ulonglong,unsigned long long) #ifdef USE_NETCDF4 /*NC_PUT_ATT(string,char*) defined separately */ #endif /*USE_NETCDF4*/ - diff --git a/libdispatch/stubdef.c b/libdispatch/stubdef.c index 519ec4d70b..7db2c71935 100644 --- a/libdispatch/stubdef.c +++ b/libdispatch/stubdef.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdispatch/test_ncuri.c b/libdispatch/test_ncuri.c index 957b41ad0e..7d23af3ed4 100644 --- a/libdispatch/test_ncuri.c +++ b/libdispatch/test_ncuri.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/libdispatch/test_pathcvt.c b/libdispatch/test_pathcvt.c index 7b93074730..1d3f12c5af 100644 --- a/libdispatch/test_pathcvt.c +++ b/libdispatch/test_pathcvt.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ @@ -50,7 +50,7 @@ main(int argc, char** argv) } #ifdef VERBOSE fprintf(stderr,"NCpathcvt:: input: |%s| actual=|%s|\n",test->path,cvt); -#endif +#endif free(cvt); } diff --git a/libdispatch/u/utf8proc.c b/libdispatch/u/utf8proc.c deleted file mode 100644 index c14bbe13fc..0000000000 --- a/libdispatch/u/utf8proc.c +++ /dev/null @@ -1,755 +0,0 @@ -/* -*- mode: c; c-basic-offset: 2; tab-width: 2; indent-tabs-mode: nil -*- */ -/* - * Copyright (c) 2015 Steven G. Johnson, Jiahao Chen, Peter Colberg, Tony Kelman, Scott P. Jones, and other contributors. - * Copyright (c) 2009 Public Software Group e. V., Berlin, Germany - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -/* - * This library contains derived data from a modified version of the - * Unicode data files. - * - * The original data files are available at - * http://www.unicode.org/Public/UNIDATA/ - * - * Please notice the copyright statement in the file "utf8proc_data.c". - */ - - -/* - * File name: utf8proc.c - * - * Description: - * Implementation of libutf8proc. - */ - - -#include "utf8proc.h" -#include "utf8proc_data.c" - - -UTF8PROC_DLLEXPORT const utf8proc_int8_t utf8proc_utf8class[256] = { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0 }; - -#define UTF8PROC_HANGUL_SBASE 0xAC00 -#define UTF8PROC_HANGUL_LBASE 0x1100 -#define UTF8PROC_HANGUL_VBASE 0x1161 -#define UTF8PROC_HANGUL_TBASE 0x11A7 -#define UTF8PROC_HANGUL_LCOUNT 19 -#define UTF8PROC_HANGUL_VCOUNT 21 -#define UTF8PROC_HANGUL_TCOUNT 28 -#define UTF8PROC_HANGUL_NCOUNT 588 -#define UTF8PROC_HANGUL_SCOUNT 11172 -/* END is exclusive */ -#define UTF8PROC_HANGUL_L_START 0x1100 -#define UTF8PROC_HANGUL_L_END 0x115A -#define UTF8PROC_HANGUL_L_FILLER 0x115F -#define UTF8PROC_HANGUL_V_START 0x1160 -#define UTF8PROC_HANGUL_V_END 0x11A3 -#define UTF8PROC_HANGUL_T_START 0x11A8 -#define UTF8PROC_HANGUL_T_END 0x11FA -#define UTF8PROC_HANGUL_S_START 0xAC00 -#define UTF8PROC_HANGUL_S_END 0xD7A4 - -/* Should follow semantic-versioning rules (semver.org) based on API - compatibility. (Note that the shared-library version number will - be different, being based on ABI compatibility.): */ -#define STRINGIZEx(x) #x -#define STRINGIZE(x) STRINGIZEx(x) -UTF8PROC_DLLEXPORT const char *utf8proc_version(void) { - return STRINGIZE(UTF8PROC_VERSION_MAJOR) "." STRINGIZE(UTF8PROC_VERSION_MINOR) "." STRINGIZE(UTF8PROC_VERSION_PATCH) ""; -} - -UTF8PROC_DLLEXPORT const char *utf8proc_errmsg(utf8proc_ssize_t errcode) { - switch (errcode) { - case UTF8PROC_ERROR_NOMEM: - return "Memory for processing UTF-8 data could not be allocated."; - case UTF8PROC_ERROR_OVERFLOW: - return "UTF-8 string is too long to be processed."; - case UTF8PROC_ERROR_INVALIDUTF8: - return "Invalid UTF-8 string"; - case UTF8PROC_ERROR_NOTASSIGNED: - return "Unassigned Unicode code point found in UTF-8 string."; - case UTF8PROC_ERROR_INVALIDOPTS: - return "Invalid options for UTF-8 processing chosen."; - default: - return "An unknown error occurred while processing UTF-8 data."; - } -} - -#define utf_cont(ch) (((ch) & 0xc0) == 0x80) -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_iterate( - const utf8proc_uint8_t *str, utf8proc_ssize_t strlen, utf8proc_int32_t *dst -) { - utf8proc_uint32_t uc; - const utf8proc_uint8_t *end; - - *dst = -1; - if (!strlen) return 0; - end = str + ((strlen < 0) ? 4 : strlen); - uc = *str++; - if (uc < 0x80) { - *dst = uc; - return 1; - } - // Must be between 0xc2 and 0xf4 inclusive to be valid - if ((uc - 0xc2) > (0xf4-0xc2)) return UTF8PROC_ERROR_INVALIDUTF8; - if (uc < 0xe0) { // 2-byte sequence - // Must have valid continuation character - if (str >= end || !utf_cont(*str)) return UTF8PROC_ERROR_INVALIDUTF8; - *dst = ((uc & 0x1f)<<6) | (*str & 0x3f); - return 2; - } - if (uc < 0xf0) { // 3-byte sequence - if ((str + 1 >= end) || !utf_cont(*str) || !utf_cont(str[1])) - return UTF8PROC_ERROR_INVALIDUTF8; - // Check for surrogate chars - if (uc == 0xed && *str > 0x9f) - return UTF8PROC_ERROR_INVALIDUTF8; - uc = ((uc & 0xf)<<12) | ((*str & 0x3f)<<6) | (str[1] & 0x3f); - if (uc < 0x800) - return UTF8PROC_ERROR_INVALIDUTF8; - *dst = uc; - return 3; - } - // 4-byte sequence - // Must have 3 valid continuation characters - if ((str + 2 >= end) || !utf_cont(*str) || !utf_cont(str[1]) || !utf_cont(str[2])) - return UTF8PROC_ERROR_INVALIDUTF8; - // Make sure in correct range (0x10000 - 0x10ffff) - if (uc == 0xf0) { - if (*str < 0x90) return UTF8PROC_ERROR_INVALIDUTF8; - } else if (uc == 0xf4) { - if (*str > 0x8f) return UTF8PROC_ERROR_INVALIDUTF8; - } - *dst = ((uc & 7)<<18) | ((*str & 0x3f)<<12) | ((str[1] & 0x3f)<<6) | (str[2] & 0x3f); - return 4; -} - -UTF8PROC_DLLEXPORT utf8proc_bool utf8proc_codepoint_valid(utf8proc_int32_t uc) { - return (((utf8proc_uint32_t)uc)-0xd800 > 0x07ff) && ((utf8proc_uint32_t)uc < 0x110000); -} - -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_encode_char(utf8proc_int32_t uc, utf8proc_uint8_t *dst) { - if (uc < 0x00) { - return 0; - } else if (uc < 0x80) { - dst[0] = (utf8proc_uint8_t) uc; - return 1; - } else if (uc < 0x800) { - dst[0] = (utf8proc_uint8_t)(0xC0 + (uc >> 6)); - dst[1] = (utf8proc_uint8_t)(0x80 + (uc & 0x3F)); - return 2; - // Note: we allow encoding 0xd800-0xdfff here, so as not to change - // the API, however, these are actually invalid in UTF-8 - } else if (uc < 0x10000) { - dst[0] = (utf8proc_uint8_t)(0xE0 + (uc >> 12)); - dst[1] = (utf8proc_uint8_t)(0x80 + ((uc >> 6) & 0x3F)); - dst[2] = (utf8proc_uint8_t)(0x80 + (uc & 0x3F)); - return 3; - } else if (uc < 0x110000) { - dst[0] = (utf8proc_uint8_t)(0xF0 + (uc >> 18)); - dst[1] = (utf8proc_uint8_t)(0x80 + ((uc >> 12) & 0x3F)); - dst[2] = (utf8proc_uint8_t)(0x80 + ((uc >> 6) & 0x3F)); - dst[3] = (utf8proc_uint8_t)(0x80 + (uc & 0x3F)); - return 4; - } else return 0; -} - -/* internal "unsafe" version that does not check whether uc is in range */ -static utf8proc_ssize_t unsafe_encode_char(utf8proc_int32_t uc, utf8proc_uint8_t *dst) { - if (uc < 0x00) { - return 0; - } else if (uc < 0x80) { - dst[0] = (utf8proc_uint8_t)uc; - return 1; - } else if (uc < 0x800) { - dst[0] = (utf8proc_uint8_t)(0xC0 + (uc >> 6)); - dst[1] = (utf8proc_uint8_t)(0x80 + (uc & 0x3F)); - return 2; - } else if (uc == 0xFFFF) { - dst[0] = (utf8proc_uint8_t)0xFF; - return 1; - } else if (uc == 0xFFFE) { - dst[0] = (utf8proc_uint8_t)0xFE; - return 1; - } else if (uc < 0x10000) { - dst[0] = (utf8proc_uint8_t)(0xE0 + (uc >> 12)); - dst[1] = (utf8proc_uint8_t)(0x80 + ((uc >> 6) & 0x3F)); - dst[2] = (utf8proc_uint8_t)(0x80 + (uc & 0x3F)); - return 3; - } else if (uc < 0x110000) { - dst[0] = (utf8proc_uint8_t)(0xF0 + (uc >> 18)); - dst[1] = (utf8proc_uint8_t)(0x80 + ((uc >> 12) & 0x3F)); - dst[2] = (utf8proc_uint8_t)(0x80 + ((uc >> 6) & 0x3F)); - dst[3] = (utf8proc_uint8_t)(0x80 + (uc & 0x3F)); - return 4; - } else return 0; -} - -/* internal "unsafe" version that does not check whether uc is in range */ -static const utf8proc_property_t *unsafe_get_property(utf8proc_int32_t uc) { - /* ASSERT: uc >= 0 && uc < 0x110000 */ - return utf8proc_properties + ( - utf8proc_stage2table[ - utf8proc_stage1table[uc >> 8] + (uc & 0xFF) - ] - ); -} - -UTF8PROC_DLLEXPORT const utf8proc_property_t *utf8proc_get_property(utf8proc_int32_t uc) { - return uc < 0 || uc >= 0x110000 ? utf8proc_properties : unsafe_get_property(uc); -} - -/* return whether there is a grapheme break between boundclasses lbc and tbc - (according to the definition of extended grapheme clusters) - - Rule numbering refers to TR29 Version 29 (Unicode 9.0.0): - http://www.unicode.org/reports/tr29/tr29-29.html - - CAVEATS: - Please note that evaluation of GB10 (grapheme breaks between emoji zwj sequences) - and GB 12/13 (regional indicator code points) require knowledge of previous characters - and are thus not handled by this function. This may result in an incorrect break before - an E_Modifier class codepoint and an incorrectly missing break between two - REGIONAL_INDICATOR class code points if such support does not exist in the caller. - - See the special support in grapheme_break_extended, for required bookkeeping by the caller. -*/ -static utf8proc_bool grapheme_break_simple(int lbc, int tbc) { - return - (lbc == UTF8PROC_BOUNDCLASS_START) ? true : // GB1 - (lbc == UTF8PROC_BOUNDCLASS_CR && // GB3 - tbc == UTF8PROC_BOUNDCLASS_LF) ? false : // --- - (lbc >= UTF8PROC_BOUNDCLASS_CR && lbc <= UTF8PROC_BOUNDCLASS_CONTROL) ? true : // GB4 - (tbc >= UTF8PROC_BOUNDCLASS_CR && tbc <= UTF8PROC_BOUNDCLASS_CONTROL) ? true : // GB5 - (lbc == UTF8PROC_BOUNDCLASS_L && // GB6 - (tbc == UTF8PROC_BOUNDCLASS_L || // --- - tbc == UTF8PROC_BOUNDCLASS_V || // --- - tbc == UTF8PROC_BOUNDCLASS_LV || // --- - tbc == UTF8PROC_BOUNDCLASS_LVT)) ? false : // --- - ((lbc == UTF8PROC_BOUNDCLASS_LV || // GB7 - lbc == UTF8PROC_BOUNDCLASS_V) && // --- - (tbc == UTF8PROC_BOUNDCLASS_V || // --- - tbc == UTF8PROC_BOUNDCLASS_T)) ? false : // --- - ((lbc == UTF8PROC_BOUNDCLASS_LVT || // GB8 - lbc == UTF8PROC_BOUNDCLASS_T) && // --- - tbc == UTF8PROC_BOUNDCLASS_T) ? false : // --- - (tbc == UTF8PROC_BOUNDCLASS_EXTEND || // GB9 - tbc == UTF8PROC_BOUNDCLASS_ZWJ || // --- - tbc == UTF8PROC_BOUNDCLASS_SPACINGMARK || // GB9a - lbc == UTF8PROC_BOUNDCLASS_PREPEND) ? false : // GB9b - ((lbc == UTF8PROC_BOUNDCLASS_E_BASE || // GB10 (requires additional handling below) - lbc == UTF8PROC_BOUNDCLASS_E_BASE_GAZ) && // ---- - tbc == UTF8PROC_BOUNDCLASS_E_MODIFIER) ? false : // ---- - (lbc == UTF8PROC_BOUNDCLASS_ZWJ && // GB11 - (tbc == UTF8PROC_BOUNDCLASS_GLUE_AFTER_ZWJ || // ---- - tbc == UTF8PROC_BOUNDCLASS_E_BASE_GAZ)) ? false : // ---- - (lbc == UTF8PROC_BOUNDCLASS_REGIONAL_INDICATOR && // GB12/13 (requires additional handling below) - tbc == UTF8PROC_BOUNDCLASS_REGIONAL_INDICATOR) ? false : // ---- - true; // GB999 -} - -static utf8proc_bool grapheme_break_extended(int lbc, int tbc, utf8proc_int32_t *state) -{ - int lbc_override = lbc; - if (state && *state != UTF8PROC_BOUNDCLASS_START) - lbc_override = *state; - utf8proc_bool break_permitted = grapheme_break_simple(lbc_override, tbc); - if (state) { - // Special support for GB 12/13 made possible by GB999. After two RI - // class codepoints we want to force a break. Do this by resetting the - // second RI's bound class to UTF8PROC_BOUNDCLASS_OTHER, to force a break - // after that character according to GB999 (unless of course such a break is - // forbidden by a different rule such as GB9). - if (*state == tbc && tbc == UTF8PROC_BOUNDCLASS_REGIONAL_INDICATOR) - *state = UTF8PROC_BOUNDCLASS_OTHER; - // Special support for GB10. Fold any EXTEND codepoints into the previous - // boundclass if we're dealing with an emoji base boundclass. - else if ((*state == UTF8PROC_BOUNDCLASS_E_BASE || - *state == UTF8PROC_BOUNDCLASS_E_BASE_GAZ) && - tbc == UTF8PROC_BOUNDCLASS_EXTEND) - *state = UTF8PROC_BOUNDCLASS_E_BASE; - else - *state = tbc; - } - return break_permitted; -} - -UTF8PROC_DLLEXPORT utf8proc_bool utf8proc_grapheme_break_stateful( - utf8proc_int32_t c1, utf8proc_int32_t c2, utf8proc_int32_t *state) { - - return grapheme_break_extended(utf8proc_get_property(c1)->boundclass, - utf8proc_get_property(c2)->boundclass, - state); -} - - -UTF8PROC_DLLEXPORT utf8proc_bool utf8proc_grapheme_break( - utf8proc_int32_t c1, utf8proc_int32_t c2) { - return utf8proc_grapheme_break_stateful(c1, c2, NULL); -} - -static utf8proc_int32_t seqindex_decode_entry(const utf8proc_uint16_t **entry) -{ - utf8proc_int32_t entry_cp = **entry; - if ((entry_cp & 0xF800) == 0xD800) { - *entry = *entry + 1; - entry_cp = ((entry_cp & 0x03FF) << 10) | (**entry & 0x03FF); - entry_cp += 0x10000; - } - return entry_cp; -} - -static utf8proc_int32_t seqindex_decode_index(const utf8proc_uint32_t seqindex) -{ - const utf8proc_uint16_t *entry = &utf8proc_sequences[seqindex]; - return seqindex_decode_entry(&entry); -} - -static utf8proc_ssize_t seqindex_write_char_decomposed(utf8proc_uint16_t seqindex, utf8proc_int32_t *dst, utf8proc_ssize_t bufsize, utf8proc_option_t options, int *last_boundclass) { - utf8proc_ssize_t written = 0; - const utf8proc_uint16_t *entry = &utf8proc_sequences[seqindex & 0x1FFF]; - int len = seqindex >> 13; - if (len >= 7) { - len = *entry; - entry++; - } - for (; len >= 0; entry++, len--) { - utf8proc_int32_t entry_cp = seqindex_decode_entry(&entry); - - written += utf8proc_decompose_char(entry_cp, dst+written, - (bufsize > written) ? (bufsize - written) : 0, options, - last_boundclass); - if (written < 0) return UTF8PROC_ERROR_OVERFLOW; - } - return written; -} - -UTF8PROC_DLLEXPORT utf8proc_int32_t utf8proc_tolower(utf8proc_int32_t c) -{ - utf8proc_int32_t cl = utf8proc_get_property(c)->lowercase_seqindex; - return cl != UINT16_MAX ? seqindex_decode_index(cl) : c; -} - -UTF8PROC_DLLEXPORT utf8proc_int32_t utf8proc_toupper(utf8proc_int32_t c) -{ - utf8proc_int32_t cu = utf8proc_get_property(c)->uppercase_seqindex; - return cu != UINT16_MAX ? seqindex_decode_index(cu) : c; -} - -UTF8PROC_DLLEXPORT utf8proc_int32_t utf8proc_totitle(utf8proc_int32_t c) -{ - utf8proc_int32_t cu = utf8proc_get_property(c)->titlecase_seqindex; - return cu != UINT16_MAX ? seqindex_decode_index(cu) : c; -} - -/* return a character width analogous to wcwidth (except portable and - hopefully less buggy than most system wcwidth functions). */ -UTF8PROC_DLLEXPORT int utf8proc_charwidth(utf8proc_int32_t c) { - return utf8proc_get_property(c)->charwidth; -} - -UTF8PROC_DLLEXPORT utf8proc_category_t utf8proc_category(utf8proc_int32_t c) { - return utf8proc_get_property(c)->category; -} - -UTF8PROC_DLLEXPORT const char *utf8proc_category_string(utf8proc_int32_t c) { - static const char s[][3] = {"Cn","Lu","Ll","Lt","Lm","Lo","Mn","Mc","Me","Nd","Nl","No","Pc","Pd","Ps","Pe","Pi","Pf","Po","Sm","Sc","Sk","So","Zs","Zl","Zp","Cc","Cf","Cs","Co"}; - return s[utf8proc_category(c)]; -} - -#define utf8proc_decompose_lump(replacement_uc) \ - return utf8proc_decompose_char((replacement_uc), dst, bufsize, \ - options & ~UTF8PROC_LUMP, last_boundclass) - -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_decompose_char(utf8proc_int32_t uc, utf8proc_int32_t *dst, utf8proc_ssize_t bufsize, utf8proc_option_t options, int *last_boundclass) { - const utf8proc_property_t *property; - utf8proc_propval_t category; - utf8proc_int32_t hangul_sindex; - if (uc < 0 || uc >= 0x110000) return UTF8PROC_ERROR_NOTASSIGNED; - property = unsafe_get_property(uc); - category = property->category; - hangul_sindex = uc - UTF8PROC_HANGUL_SBASE; - if (options & (UTF8PROC_COMPOSE|UTF8PROC_DECOMPOSE)) { - if (hangul_sindex >= 0 && hangul_sindex < UTF8PROC_HANGUL_SCOUNT) { - utf8proc_int32_t hangul_tindex; - if (bufsize >= 1) { - dst[0] = UTF8PROC_HANGUL_LBASE + - hangul_sindex / UTF8PROC_HANGUL_NCOUNT; - if (bufsize >= 2) dst[1] = UTF8PROC_HANGUL_VBASE + - (hangul_sindex % UTF8PROC_HANGUL_NCOUNT) / UTF8PROC_HANGUL_TCOUNT; - } - hangul_tindex = hangul_sindex % UTF8PROC_HANGUL_TCOUNT; - if (!hangul_tindex) return 2; - if (bufsize >= 3) dst[2] = UTF8PROC_HANGUL_TBASE + hangul_tindex; - return 3; - } - } - if (options & UTF8PROC_REJECTNA) { - if (!category) return UTF8PROC_ERROR_NOTASSIGNED; - } - if (options & UTF8PROC_IGNORE) { - if (property->ignorable) return 0; - } - if (options & UTF8PROC_LUMP) { - if (category == UTF8PROC_CATEGORY_ZS) utf8proc_decompose_lump(0x0020); - if (uc == 0x2018 || uc == 0x2019 || uc == 0x02BC || uc == 0x02C8) - utf8proc_decompose_lump(0x0027); - if (category == UTF8PROC_CATEGORY_PD || uc == 0x2212) - utf8proc_decompose_lump(0x002D); - if (uc == 0x2044 || uc == 0x2215) utf8proc_decompose_lump(0x002F); - if (uc == 0x2236) utf8proc_decompose_lump(0x003A); - if (uc == 0x2039 || uc == 0x2329 || uc == 0x3008) - utf8proc_decompose_lump(0x003C); - if (uc == 0x203A || uc == 0x232A || uc == 0x3009) - utf8proc_decompose_lump(0x003E); - if (uc == 0x2216) utf8proc_decompose_lump(0x005C); - if (uc == 0x02C4 || uc == 0x02C6 || uc == 0x2038 || uc == 0x2303) - utf8proc_decompose_lump(0x005E); - if (category == UTF8PROC_CATEGORY_PC || uc == 0x02CD) - utf8proc_decompose_lump(0x005F); - if (uc == 0x02CB) utf8proc_decompose_lump(0x0060); - if (uc == 0x2223) utf8proc_decompose_lump(0x007C); - if (uc == 0x223C) utf8proc_decompose_lump(0x007E); - if ((options & UTF8PROC_NLF2LS) && (options & UTF8PROC_NLF2PS)) { - if (category == UTF8PROC_CATEGORY_ZL || - category == UTF8PROC_CATEGORY_ZP) - utf8proc_decompose_lump(0x000A); - } - } - if (options & UTF8PROC_STRIPMARK) { - if (category == UTF8PROC_CATEGORY_MN || - category == UTF8PROC_CATEGORY_MC || - category == UTF8PROC_CATEGORY_ME) return 0; - } - if (options & UTF8PROC_CASEFOLD) { - if (property->casefold_seqindex != UINT16_MAX) { - return seqindex_write_char_decomposed(property->casefold_seqindex, dst, bufsize, options, last_boundclass); - } - } - if (options & (UTF8PROC_COMPOSE|UTF8PROC_DECOMPOSE)) { - if (property->decomp_seqindex != UINT16_MAX && - (!property->decomp_type || (options & UTF8PROC_COMPAT))) { - return seqindex_write_char_decomposed(property->decomp_seqindex, dst, bufsize, options, last_boundclass); - } - } - if (options & UTF8PROC_CHARBOUND) { - utf8proc_bool boundary; - int tbc = property->boundclass; - boundary = grapheme_break_extended(*last_boundclass, tbc, last_boundclass); - if (boundary) { - if (bufsize >= 1) dst[0] = 0xFFFF; - if (bufsize >= 2) dst[1] = uc; - return 2; - } - } - if (bufsize >= 1) *dst = uc; - return 1; -} - -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_decompose( - const utf8proc_uint8_t *str, utf8proc_ssize_t strlen, - utf8proc_int32_t *buffer, utf8proc_ssize_t bufsize, utf8proc_option_t options -) { - return utf8proc_decompose_custom(str, strlen, buffer, bufsize, options, NULL, NULL); -} - -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_decompose_custom( - const utf8proc_uint8_t *str, utf8proc_ssize_t strlen, - utf8proc_int32_t *buffer, utf8proc_ssize_t bufsize, utf8proc_option_t options, - utf8proc_custom_func custom_func, void *custom_data -) { - /* strlen will be ignored, if UTF8PROC_NULLTERM is set in options */ - utf8proc_ssize_t wpos = 0; - if ((options & UTF8PROC_COMPOSE) && (options & UTF8PROC_DECOMPOSE)) - return UTF8PROC_ERROR_INVALIDOPTS; - if ((options & UTF8PROC_STRIPMARK) && - !(options & UTF8PROC_COMPOSE) && !(options & UTF8PROC_DECOMPOSE)) - return UTF8PROC_ERROR_INVALIDOPTS; - { - utf8proc_int32_t uc; - utf8proc_ssize_t rpos = 0; - utf8proc_ssize_t decomp_result; - int boundclass = UTF8PROC_BOUNDCLASS_START; - while (1) { - if (options & UTF8PROC_NULLTERM) { - rpos += utf8proc_iterate(str + rpos, -1, &uc); - /* checking of return value is not necessary, - as 'uc' is < 0 in case of error */ - if (uc < 0) return UTF8PROC_ERROR_INVALIDUTF8; - if (rpos < 0) return UTF8PROC_ERROR_OVERFLOW; - if (uc == 0) break; - } else { - if (rpos >= strlen) break; - rpos += utf8proc_iterate(str + rpos, strlen - rpos, &uc); - if (uc < 0) return UTF8PROC_ERROR_INVALIDUTF8; - } - if (custom_func != NULL) { - uc = custom_func(uc, custom_data); /* user-specified custom mapping */ - } - decomp_result = utf8proc_decompose_char( - uc, buffer + wpos, (bufsize > wpos) ? (bufsize - wpos) : 0, options, - &boundclass - ); - if (decomp_result < 0) return decomp_result; - wpos += decomp_result; - /* prohibiting integer overflows due to too long strings: */ - if (wpos < 0 || - wpos > (utf8proc_ssize_t)(SSIZE_MAX/sizeof(utf8proc_int32_t)/2)) - return UTF8PROC_ERROR_OVERFLOW; - } - } - if ((options & (UTF8PROC_COMPOSE|UTF8PROC_DECOMPOSE)) && bufsize >= wpos) { - utf8proc_ssize_t pos = 0; - while (pos < wpos-1) { - utf8proc_int32_t uc1, uc2; - const utf8proc_property_t *property1, *property2; - uc1 = buffer[pos]; - uc2 = buffer[pos+1]; - property1 = unsafe_get_property(uc1); - property2 = unsafe_get_property(uc2); - if (property1->combining_class > property2->combining_class && - property2->combining_class > 0) { - buffer[pos] = uc2; - buffer[pos+1] = uc1; - if (pos > 0) pos--; else pos++; - } else { - pos++; - } - } - } - return wpos; -} - -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_normalize_utf32(utf8proc_int32_t *buffer, utf8proc_ssize_t length, utf8proc_option_t options) { - /* UTF8PROC_NULLTERM option will be ignored, 'length' is never ignored */ - if (options & (UTF8PROC_NLF2LS | UTF8PROC_NLF2PS | UTF8PROC_STRIPCC)) { - utf8proc_ssize_t rpos; - utf8proc_ssize_t wpos = 0; - utf8proc_int32_t uc; - for (rpos = 0; rpos < length; rpos++) { - uc = buffer[rpos]; - if (uc == 0x000D && rpos < length-1 && buffer[rpos+1] == 0x000A) rpos++; - if (uc == 0x000A || uc == 0x000D || uc == 0x0085 || - ((options & UTF8PROC_STRIPCC) && (uc == 0x000B || uc == 0x000C))) { - if (options & UTF8PROC_NLF2LS) { - if (options & UTF8PROC_NLF2PS) { - buffer[wpos++] = 0x000A; - } else { - buffer[wpos++] = 0x2028; - } - } else { - if (options & UTF8PROC_NLF2PS) { - buffer[wpos++] = 0x2029; - } else { - buffer[wpos++] = 0x0020; - } - } - } else if ((options & UTF8PROC_STRIPCC) && - (uc < 0x0020 || (uc >= 0x007F && uc < 0x00A0))) { - if (uc == 0x0009) buffer[wpos++] = 0x0020; - } else { - buffer[wpos++] = uc; - } - } - length = wpos; - } - if (options & UTF8PROC_COMPOSE) { - utf8proc_int32_t *starter = NULL; - utf8proc_int32_t current_char; - const utf8proc_property_t *starter_property = NULL, *current_property; - utf8proc_propval_t max_combining_class = -1; - utf8proc_ssize_t rpos; - utf8proc_ssize_t wpos = 0; - utf8proc_int32_t composition; - for (rpos = 0; rpos < length; rpos++) { - current_char = buffer[rpos]; - current_property = unsafe_get_property(current_char); - if (starter && current_property->combining_class > max_combining_class) { - /* combination perhaps possible */ - utf8proc_int32_t hangul_lindex; - utf8proc_int32_t hangul_sindex; - hangul_lindex = *starter - UTF8PROC_HANGUL_LBASE; - if (hangul_lindex >= 0 && hangul_lindex < UTF8PROC_HANGUL_LCOUNT) { - utf8proc_int32_t hangul_vindex; - hangul_vindex = current_char - UTF8PROC_HANGUL_VBASE; - if (hangul_vindex >= 0 && hangul_vindex < UTF8PROC_HANGUL_VCOUNT) { - *starter = UTF8PROC_HANGUL_SBASE + - (hangul_lindex * UTF8PROC_HANGUL_VCOUNT + hangul_vindex) * - UTF8PROC_HANGUL_TCOUNT; - starter_property = NULL; - continue; - } - } - hangul_sindex = *starter - UTF8PROC_HANGUL_SBASE; - if (hangul_sindex >= 0 && hangul_sindex < UTF8PROC_HANGUL_SCOUNT && - (hangul_sindex % UTF8PROC_HANGUL_TCOUNT) == 0) { - utf8proc_int32_t hangul_tindex; - hangul_tindex = current_char - UTF8PROC_HANGUL_TBASE; - if (hangul_tindex >= 0 && hangul_tindex < UTF8PROC_HANGUL_TCOUNT) { - *starter += hangul_tindex; - starter_property = NULL; - continue; - } - } - if (!starter_property) { - starter_property = unsafe_get_property(*starter); - } - if (starter_property->comb_index < 0x8000 && - current_property->comb_index != UINT16_MAX && - current_property->comb_index >= 0x8000) { - int sidx = starter_property->comb_index; - int idx = (current_property->comb_index & 0x3FFF) - utf8proc_combinations[sidx]; - if (idx >= 0 && idx <= utf8proc_combinations[sidx + 1] ) { - idx += sidx + 2; - if (current_property->comb_index & 0x4000) { - composition = (utf8proc_combinations[idx] << 16) | utf8proc_combinations[idx+1]; - } else - composition = utf8proc_combinations[idx]; - - if (composition > 0 && (!(options & UTF8PROC_STABLE) || - !(unsafe_get_property(composition)->comp_exclusion))) { - *starter = composition; - starter_property = NULL; - continue; - } - } - } - } - buffer[wpos] = current_char; - if (current_property->combining_class) { - if (current_property->combining_class > max_combining_class) { - max_combining_class = current_property->combining_class; - } - } else { - starter = buffer + wpos; - starter_property = NULL; - max_combining_class = -1; - } - wpos++; - } - length = wpos; - } - return length; -} - -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_reencode(utf8proc_int32_t *buffer, utf8proc_ssize_t length, utf8proc_option_t options) { - /* UTF8PROC_NULLTERM option will be ignored, 'length' is never ignored - ASSERT: 'buffer' has one spare byte of free space at the end! */ - length = utf8proc_normalize_utf32(buffer, length, options); - if (length < 0) return length; - { - utf8proc_ssize_t rpos, wpos = 0; - utf8proc_int32_t uc; - if (options & UTF8PROC_CHARBOUND) { - for (rpos = 0; rpos < length; rpos++) { - uc = buffer[rpos]; - wpos += unsafe_encode_char(uc, ((utf8proc_uint8_t *)buffer) + wpos); - } - } else { - for (rpos = 0; rpos < length; rpos++) { - uc = buffer[rpos]; - wpos += utf8proc_encode_char(uc, ((utf8proc_uint8_t *)buffer) + wpos); - } - } - ((utf8proc_uint8_t *)buffer)[wpos] = 0; - return wpos; - } -} - -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_map( - const utf8proc_uint8_t *str, utf8proc_ssize_t strlen, utf8proc_uint8_t **dstptr, utf8proc_option_t options -) { - return utf8proc_map_custom(str, strlen, dstptr, options, NULL, NULL); -} - -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_map_custom( - const utf8proc_uint8_t *str, utf8proc_ssize_t strlen, utf8proc_uint8_t **dstptr, utf8proc_option_t options, - utf8proc_custom_func custom_func, void *custom_data -) { - utf8proc_int32_t *buffer; - utf8proc_ssize_t result; - *dstptr = NULL; - result = utf8proc_decompose_custom(str, strlen, NULL, 0, options, custom_func, custom_data); - if (result < 0) return result; - buffer = (utf8proc_int32_t *) malloc(result * sizeof(utf8proc_int32_t) + 1); - if (!buffer) return UTF8PROC_ERROR_NOMEM; - result = utf8proc_decompose_custom(str, strlen, buffer, result, options, custom_func, custom_data); - if (result < 0) { - free(buffer); - return result; - } - result = utf8proc_reencode(buffer, result, options); - if (result < 0) { - free(buffer); - return result; - } - { - utf8proc_int32_t *newptr; - newptr = (utf8proc_int32_t *) realloc(buffer, (size_t)result+1); - if (newptr) buffer = newptr; - } - *dstptr = (utf8proc_uint8_t *)buffer; - return result; -} - -UTF8PROC_DLLEXPORT utf8proc_uint8_t *utf8proc_NFD(const utf8proc_uint8_t *str) { - utf8proc_uint8_t *retval; - utf8proc_map(str, 0, &retval, UTF8PROC_NULLTERM | UTF8PROC_STABLE | - UTF8PROC_DECOMPOSE); - return retval; -} - -UTF8PROC_DLLEXPORT utf8proc_uint8_t *utf8proc_NFC(const utf8proc_uint8_t *str) { - utf8proc_uint8_t *retval; - utf8proc_map(str, 0, &retval, UTF8PROC_NULLTERM | UTF8PROC_STABLE | - UTF8PROC_COMPOSE); - return retval; -} - -UTF8PROC_DLLEXPORT utf8proc_uint8_t *utf8proc_NFKD(const utf8proc_uint8_t *str) { - utf8proc_uint8_t *retval; - utf8proc_map(str, 0, &retval, UTF8PROC_NULLTERM | UTF8PROC_STABLE | - UTF8PROC_DECOMPOSE | UTF8PROC_COMPAT); - return retval; -} - -UTF8PROC_DLLEXPORT utf8proc_uint8_t *utf8proc_NFKC(const utf8proc_uint8_t *str) { - utf8proc_uint8_t *retval; - utf8proc_map(str, 0, &retval, UTF8PROC_NULLTERM | UTF8PROC_STABLE | - UTF8PROC_COMPOSE | UTF8PROC_COMPAT); - return retval; -} diff --git a/libdispatch/u/utf8proc.h b/libdispatch/u/utf8proc.h deleted file mode 100644 index 495cd96006..0000000000 --- a/libdispatch/u/utf8proc.h +++ /dev/null @@ -1,699 +0,0 @@ -/* - * Copyright (c) 2015 Steven G. Johnson, Jiahao Chen, Peter Colberg, Tony Kelman, Scott P. Jones, and other contributors. - * Copyright (c) 2009 Public Software Group e. V., Berlin, Germany - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - - -/** - * @mainpage - * - * utf8proc is a free/open-source (MIT/expat licensed) C library - * providing Unicode normalization, case-folding, and other operations - * for strings in the UTF-8 encoding, supporting Unicode version - * 8.0.0. See the utf8proc home page (http://julialang.org/utf8proc/) - * for downloads and other information, or the source code on github - * (https://github.com/JuliaLang/utf8proc). - * - * For the utf8proc API documentation, see: @ref utf8proc.h - * - * The features of utf8proc include: - * - * - Transformation of strings (@ref utf8proc_map) to: - * - decompose (@ref UTF8PROC_DECOMPOSE) or compose (@ref UTF8PROC_COMPOSE) Unicode combining characters (http://en.wikipedia.org/wiki/Combining_character) - * - canonicalize Unicode compatibility characters (@ref UTF8PROC_COMPAT) - * - strip "ignorable" (@ref UTF8PROC_IGNORE) characters, control characters (@ref UTF8PROC_STRIPCC), or combining characters such as accents (@ref UTF8PROC_STRIPMARK) - * - case-folding (@ref UTF8PROC_CASEFOLD) - * - Unicode normalization: @ref utf8proc_NFD, @ref utf8proc_NFC, @ref utf8proc_NFKD, @ref utf8proc_NFKC - * - Detecting grapheme boundaries (@ref utf8proc_grapheme_break and @ref UTF8PROC_CHARBOUND) - * - Character-width computation: @ref utf8proc_charwidth - * - Classification of characters by Unicode category: @ref utf8proc_category and @ref utf8proc_category_string - * - Encode (@ref utf8proc_encode_char) and decode (@ref utf8proc_iterate) Unicode codepoints to/from UTF-8. - */ - -/** @file */ - -#ifndef UTF8PROC_H -#define UTF8PROC_H - -/** @name API version - * - * The utf8proc API version MAJOR.MINOR.PATCH, following - * semantic-versioning rules (http://semver.org) based on API - * compatibility. - * - * This is also returned at runtime by @ref utf8proc_version; however, the - * runtime version may append a string like "-dev" to the version number - * for prerelease versions. - * - * @note The shared-library version number in the Makefile - * (and CMakeLists.txt, and MANIFEST) may be different, - * being based on ABI compatibility rather than API compatibility. - */ -/** @{ */ -/** The MAJOR version number (increased when backwards API compatibility is broken). */ -#define UTF8PROC_VERSION_MAJOR 2 -/** The MINOR version number (increased when new functionality is added in a backwards-compatible manner). */ -#define UTF8PROC_VERSION_MINOR 1 -/** The PATCH version (increased for fixes that do not change the API). */ -#define UTF8PROC_VERSION_PATCH 0 -/** @} */ - -#include - -#if defined(_MSC_VER) && _MSC_VER < 1800 -// MSVC prior to 2013 lacked stdbool.h and inttypes.h -typedef signed char utf8proc_int8_t; -typedef unsigned char utf8proc_uint8_t; -typedef short utf8proc_int16_t; -typedef unsigned short utf8proc_uint16_t; -typedef int utf8proc_int32_t; -typedef unsigned int utf8proc_uint32_t; -# ifdef _WIN64 -typedef __int64 utf8proc_ssize_t; -typedef unsigned __int64 utf8proc_size_t; -# else -typedef int utf8proc_ssize_t; -typedef unsigned int utf8proc_size_t; -# endif -# ifndef __cplusplus -// emulate C99 bool -typedef unsigned char utf8proc_bool; -# ifndef __bool_true_false_are_defined -# define false 0 -# define true 1 -# define __bool_true_false_are_defined 1 -# endif -# else -typedef bool utf8proc_bool; -# endif -#else -# include -# include -# include -typedef int8_t utf8proc_int8_t; -typedef uint8_t utf8proc_uint8_t; -typedef int16_t utf8proc_int16_t; -typedef uint16_t utf8proc_uint16_t; -typedef int32_t utf8proc_int32_t; -typedef uint32_t utf8proc_uint32_t; -typedef size_t utf8proc_size_t; -typedef ptrdiff_t utf8proc_ssize_t; -typedef bool utf8proc_bool; -#endif -#include - -#ifdef _WIN32 -# ifdef UTF8PROC_EXPORTS -# define UTF8PROC_DLLEXPORT __declspec(dllexport) -# else -# define UTF8PROC_DLLEXPORT __declspec(dllimport) -# endif -#elif __GNUC__ >= 4 -# define UTF8PROC_DLLEXPORT __attribute__ ((visibility("default"))) -#else -# define UTF8PROC_DLLEXPORT -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef SSIZE_MAX -#define SSIZE_MAX ((size_t)SIZE_MAX/2) -#endif - -#ifndef UINT16_MAX -# define UINT16_MAX 65535U -#endif - -/** - * Option flags used by several functions in the library. - */ -typedef enum { - /** The given UTF-8 input is NULL terminated. */ - UTF8PROC_NULLTERM = (1<<0), - /** Unicode Versioning Stability has to be respected. */ - UTF8PROC_STABLE = (1<<1), - /** Compatibility decomposition (i.e. formatting information is lost). */ - UTF8PROC_COMPAT = (1<<2), - /** Return a result with decomposed characters. */ - UTF8PROC_COMPOSE = (1<<3), - /** Return a result with decomposed characters. */ - UTF8PROC_DECOMPOSE = (1<<4), - /** Strip "default ignorable characters" such as SOFT-HYPHEN or ZERO-WIDTH-SPACE. */ - UTF8PROC_IGNORE = (1<<5), - /** Return an error, if the input contains unassigned codepoints. */ - UTF8PROC_REJECTNA = (1<<6), - /** - * Indicating that NLF-sequences (LF, CRLF, CR, NEL) are representing a - * line break, and should be converted to the codepoint for line - * separation (LS). - */ - UTF8PROC_NLF2LS = (1<<7), - /** - * Indicating that NLF-sequences are representing a paragraph break, and - * should be converted to the codepoint for paragraph separation - * (PS). - */ - UTF8PROC_NLF2PS = (1<<8), - /** Indicating that the meaning of NLF-sequences is unknown. */ - UTF8PROC_NLF2LF = (UTF8PROC_NLF2LS | UTF8PROC_NLF2PS), - /** Strips and/or convers control characters. - * - * NLF-sequences are transformed into space, except if one of the - * NLF2LS/PS/LF options is given. HorizontalTab (HT) and FormFeed (FF) - * are treated as a NLF-sequence in this case. All other control - * characters are simply removed. - */ - UTF8PROC_STRIPCC = (1<<9), - /** - * Performs unicode case folding, to be able to do a case-insensitive - * string comparison. - */ - UTF8PROC_CASEFOLD = (1<<10), - /** - * Inserts 0xFF bytes at the beginning of each sequence which is - * representing a single grapheme cluster (see UAX#29). - */ - UTF8PROC_CHARBOUND = (1<<11), - /** Lumps certain characters together. - * - * E.g. HYPHEN U+2010 and MINUS U+2212 to ASCII "-". See lump.md for details. - * - * If NLF2LF is set, this includes a transformation of paragraph and - * line separators to ASCII line-feed (LF). - */ - UTF8PROC_LUMP = (1<<12), - /** Strips all character markings. - * - * This includes non-spacing, spacing and enclosing (i.e. accents). - * @note This option works only with @ref UTF8PROC_COMPOSE or - * @ref UTF8PROC_DECOMPOSE - */ - UTF8PROC_STRIPMARK = (1<<13), -} utf8proc_option_t; - -/** @name Error codes - * Error codes being returned by almost all functions. - */ -/** @{ */ -/** Memory could not be allocated. */ -#define UTF8PROC_ERROR_NOMEM -1 -/** The given string is too long to be processed. */ -#define UTF8PROC_ERROR_OVERFLOW -2 -/** The given string is not a legal UTF-8 string. */ -#define UTF8PROC_ERROR_INVALIDUTF8 -3 -/** The @ref UTF8PROC_REJECTNA flag was set and an unassigned codepoint was found. */ -#define UTF8PROC_ERROR_NOTASSIGNED -4 -/** Invalid options have been used. */ -#define UTF8PROC_ERROR_INVALIDOPTS -5 -/** @} */ - -/* @name Types */ - -/** Holds the value of a property. */ -typedef utf8proc_int16_t utf8proc_propval_t; - -/** Struct containing information about a codepoint. */ -typedef struct utf8proc_property_struct { - /** - * Unicode category. - * @see utf8proc_category_t. - */ - utf8proc_propval_t category; - utf8proc_propval_t combining_class; - /** - * Bidirectional class. - * @see utf8proc_bidi_class_t. - */ - utf8proc_propval_t bidi_class; - /** - * @anchor Decomposition type. - * @see utf8proc_decomp_type_t. - */ - utf8proc_propval_t decomp_type; - utf8proc_uint16_t decomp_seqindex; - utf8proc_uint16_t casefold_seqindex; - utf8proc_uint16_t uppercase_seqindex; - utf8proc_uint16_t lowercase_seqindex; - utf8proc_uint16_t titlecase_seqindex; - utf8proc_uint16_t comb_index; - unsigned bidi_mirrored:1; - unsigned comp_exclusion:1; - /** - * Can this codepoint be ignored? - * - * Used by @ref utf8proc_decompose_char when @ref UTF8PROC_IGNORE is - * passed as an option. - */ - unsigned ignorable:1; - unsigned control_boundary:1; - /** The width of the codepoint. */ - unsigned charwidth:2; - unsigned pad:2; - /** - * Boundclass. - * @see utf8proc_boundclass_t. - */ - unsigned boundclass:8; -} utf8proc_property_t; - -/** Unicode categories. */ -typedef enum { - UTF8PROC_CATEGORY_CN = 0, /**< Other, not assigned */ - UTF8PROC_CATEGORY_LU = 1, /**< Letter, uppercase */ - UTF8PROC_CATEGORY_LL = 2, /**< Letter, lowercase */ - UTF8PROC_CATEGORY_LT = 3, /**< Letter, titlecase */ - UTF8PROC_CATEGORY_LM = 4, /**< Letter, modifier */ - UTF8PROC_CATEGORY_LO = 5, /**< Letter, other */ - UTF8PROC_CATEGORY_MN = 6, /**< Mark, nonspacing */ - UTF8PROC_CATEGORY_MC = 7, /**< Mark, spacing combining */ - UTF8PROC_CATEGORY_ME = 8, /**< Mark, enclosing */ - UTF8PROC_CATEGORY_ND = 9, /**< Number, decimal digit */ - UTF8PROC_CATEGORY_NL = 10, /**< Number, letter */ - UTF8PROC_CATEGORY_NO = 11, /**< Number, other */ - UTF8PROC_CATEGORY_PC = 12, /**< Punctuation, connector */ - UTF8PROC_CATEGORY_PD = 13, /**< Punctuation, dash */ - UTF8PROC_CATEGORY_PS = 14, /**< Punctuation, open */ - UTF8PROC_CATEGORY_PE = 15, /**< Punctuation, close */ - UTF8PROC_CATEGORY_PI = 16, /**< Punctuation, initial quote */ - UTF8PROC_CATEGORY_PF = 17, /**< Punctuation, final quote */ - UTF8PROC_CATEGORY_PO = 18, /**< Punctuation, other */ - UTF8PROC_CATEGORY_SM = 19, /**< Symbol, math */ - UTF8PROC_CATEGORY_SC = 20, /**< Symbol, currency */ - UTF8PROC_CATEGORY_SK = 21, /**< Symbol, modifier */ - UTF8PROC_CATEGORY_SO = 22, /**< Symbol, other */ - UTF8PROC_CATEGORY_ZS = 23, /**< Separator, space */ - UTF8PROC_CATEGORY_ZL = 24, /**< Separator, line */ - UTF8PROC_CATEGORY_ZP = 25, /**< Separator, paragraph */ - UTF8PROC_CATEGORY_CC = 26, /**< Other, control */ - UTF8PROC_CATEGORY_CF = 27, /**< Other, format */ - UTF8PROC_CATEGORY_CS = 28, /**< Other, surrogate */ - UTF8PROC_CATEGORY_CO = 29, /**< Other, private use */ -} utf8proc_category_t; - -/** Bidirectional character classes. */ -typedef enum { - UTF8PROC_BIDI_CLASS_L = 1, /**< Left-to-Right */ - UTF8PROC_BIDI_CLASS_LRE = 2, /**< Left-to-Right Embedding */ - UTF8PROC_BIDI_CLASS_LRO = 3, /**< Left-to-Right Override */ - UTF8PROC_BIDI_CLASS_R = 4, /**< Right-to-Left */ - UTF8PROC_BIDI_CLASS_AL = 5, /**< Right-to-Left Arabic */ - UTF8PROC_BIDI_CLASS_RLE = 6, /**< Right-to-Left Embedding */ - UTF8PROC_BIDI_CLASS_RLO = 7, /**< Right-to-Left Override */ - UTF8PROC_BIDI_CLASS_PDF = 8, /**< Pop Directional Format */ - UTF8PROC_BIDI_CLASS_EN = 9, /**< European Number */ - UTF8PROC_BIDI_CLASS_ES = 10, /**< European Separator */ - UTF8PROC_BIDI_CLASS_ET = 11, /**< European Number Terminator */ - UTF8PROC_BIDI_CLASS_AN = 12, /**< Arabic Number */ - UTF8PROC_BIDI_CLASS_CS = 13, /**< Common Number Separator */ - UTF8PROC_BIDI_CLASS_NSM = 14, /**< Nonspacing Mark */ - UTF8PROC_BIDI_CLASS_BN = 15, /**< Boundary Neutral */ - UTF8PROC_BIDI_CLASS_B = 16, /**< Paragraph Separator */ - UTF8PROC_BIDI_CLASS_S = 17, /**< Segment Separator */ - UTF8PROC_BIDI_CLASS_WS = 18, /**< Whitespace */ - UTF8PROC_BIDI_CLASS_ON = 19, /**< Other Neutrals */ - UTF8PROC_BIDI_CLASS_LRI = 20, /**< Left-to-Right Isolate */ - UTF8PROC_BIDI_CLASS_RLI = 21, /**< Right-to-Left Isolate */ - UTF8PROC_BIDI_CLASS_FSI = 22, /**< First Strong Isolate */ - UTF8PROC_BIDI_CLASS_PDI = 23, /**< Pop Directional Isolate */ -} utf8proc_bidi_class_t; - -/** Decomposition type. */ -typedef enum { - UTF8PROC_DECOMP_TYPE_FONT = 1, /**< Font */ - UTF8PROC_DECOMP_TYPE_NOBREAK = 2, /**< Nobreak */ - UTF8PROC_DECOMP_TYPE_INITIAL = 3, /**< Initial */ - UTF8PROC_DECOMP_TYPE_MEDIAL = 4, /**< Medial */ - UTF8PROC_DECOMP_TYPE_FINAL = 5, /**< Final */ - UTF8PROC_DECOMP_TYPE_ISOLATED = 6, /**< Isolated */ - UTF8PROC_DECOMP_TYPE_CIRCLE = 7, /**< Circle */ - UTF8PROC_DECOMP_TYPE_SUPER = 8, /**< Super */ - UTF8PROC_DECOMP_TYPE_SUB = 9, /**< Sub */ - UTF8PROC_DECOMP_TYPE_VERTICAL = 10, /**< Vertical */ - UTF8PROC_DECOMP_TYPE_WIDE = 11, /**< Wide */ - UTF8PROC_DECOMP_TYPE_NARROW = 12, /**< Narrow */ - UTF8PROC_DECOMP_TYPE_SMALL = 13, /**< Small */ - UTF8PROC_DECOMP_TYPE_SQUARE = 14, /**< Square */ - UTF8PROC_DECOMP_TYPE_FRACTION = 15, /**< Fraction */ - UTF8PROC_DECOMP_TYPE_COMPAT = 16, /**< Compat */ -} utf8proc_decomp_type_t; - -/** Boundclass property. (TR29) */ -typedef enum { - UTF8PROC_BOUNDCLASS_START = 0, /**< Start */ - UTF8PROC_BOUNDCLASS_OTHER = 1, /**< Other */ - UTF8PROC_BOUNDCLASS_CR = 2, /**< Cr */ - UTF8PROC_BOUNDCLASS_LF = 3, /**< Lf */ - UTF8PROC_BOUNDCLASS_CONTROL = 4, /**< Control */ - UTF8PROC_BOUNDCLASS_EXTEND = 5, /**< Extend */ - UTF8PROC_BOUNDCLASS_L = 6, /**< L */ - UTF8PROC_BOUNDCLASS_V = 7, /**< V */ - UTF8PROC_BOUNDCLASS_T = 8, /**< T */ - UTF8PROC_BOUNDCLASS_LV = 9, /**< Lv */ - UTF8PROC_BOUNDCLASS_LVT = 10, /**< Lvt */ - UTF8PROC_BOUNDCLASS_REGIONAL_INDICATOR = 11, /**< Regional indicator */ - UTF8PROC_BOUNDCLASS_SPACINGMARK = 12, /**< Spacingmark */ - UTF8PROC_BOUNDCLASS_PREPEND = 13, /**< Prepend */ - UTF8PROC_BOUNDCLASS_ZWJ = 14, /**< Zero Width Joiner */ - UTF8PROC_BOUNDCLASS_E_BASE = 15, /**< Emoji Base */ - UTF8PROC_BOUNDCLASS_E_MODIFIER = 16, /**< Emoji Modifier */ - UTF8PROC_BOUNDCLASS_GLUE_AFTER_ZWJ = 17, /**< Glue_After_ZWJ */ - UTF8PROC_BOUNDCLASS_E_BASE_GAZ = 18, /**< E_BASE + GLUE_AFTER_ZJW */ -} utf8proc_boundclass_t; - -/** - * Function pointer type passed to @ref utf8proc_map_custom and - * @ref utf8proc_decompose_custom, which is used to specify a user-defined - * mapping of codepoints to be applied in conjunction with other mappings. - */ -typedef utf8proc_int32_t (*utf8proc_custom_func)(utf8proc_int32_t codepoint, void *data); - -/** - * Array containing the byte lengths of a UTF-8 encoded codepoint based - * on the first byte. - */ -UTF8PROC_DLLEXPORT extern const utf8proc_int8_t utf8proc_utf8class[256]; - -/** - * Returns the utf8proc API version as a string MAJOR.MINOR.PATCH - * (http://semver.org format), possibly with a "-dev" suffix for - * development versions. - */ -UTF8PROC_DLLEXPORT const char *utf8proc_version(void); - -/** - * Returns an informative error string for the given utf8proc error code - * (e.g. the error codes returned by @ref utf8proc_map). - */ -UTF8PROC_DLLEXPORT const char *utf8proc_errmsg(utf8proc_ssize_t errcode); - -/** - * Reads a single codepoint from the UTF-8 sequence being pointed to by `str`. - * The maximum number of bytes read is `strlen`, unless `strlen` is - * negative (in which case up to 4 bytes are read). - * - * If a valid codepoint could be read, it is stored in the variable - * pointed to by `codepoint_ref`, otherwise that variable will be set to -1. - * In case of success, the number of bytes read is returned; otherwise, a - * negative error code is returned. - */ -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_iterate(const utf8proc_uint8_t *str, utf8proc_ssize_t strlen, utf8proc_int32_t *codepoint_ref); - -/** - * Check if a codepoint is valid (regardless of whether it has been - * assigned a value by the current Unicode standard). - * - * @return 1 if the given `codepoint` is valid and otherwise return 0. - */ -UTF8PROC_DLLEXPORT utf8proc_bool utf8proc_codepoint_valid(utf8proc_int32_t codepoint); - -/** - * Encodes the codepoint as an UTF-8 string in the byte array pointed - * to by `dst`. This array must be at least 4 bytes long. - * - * In case of success the number of bytes written is returned, and - * otherwise 0 is returned. - * - * This function does not check whether `codepoint` is valid Unicode. - */ -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_encode_char(utf8proc_int32_t codepoint, utf8proc_uint8_t *dst); - -/** - * Look up the properties for a given codepoint. - * - * @param codepoint The Unicode codepoint. - * - * @returns - * A pointer to a (constant) struct containing information about - * the codepoint. - * @par - * If the codepoint is unassigned or invalid, a pointer to a special struct is - * returned in which `category` is 0 (@ref UTF8PROC_CATEGORY_CN). - */ -UTF8PROC_DLLEXPORT const utf8proc_property_t *utf8proc_get_property(utf8proc_int32_t codepoint); - -/** Decompose a codepoint into an array of codepoints. - * - * @param codepoint the codepoint. - * @param dst the destination buffer. - * @param bufsize the size of the destination buffer. - * @param options one or more of the following flags: - * - @ref UTF8PROC_REJECTNA - return an error `codepoint` is unassigned - * - @ref UTF8PROC_IGNORE - strip "default ignorable" codepoints - * - @ref UTF8PROC_CASEFOLD - apply Unicode casefolding - * - @ref UTF8PROC_COMPAT - replace certain codepoints with their - * compatibility decomposition - * - @ref UTF8PROC_CHARBOUND - insert 0xFF bytes before each grapheme cluster - * - @ref UTF8PROC_LUMP - lump certain different codepoints together - * - @ref UTF8PROC_STRIPMARK - remove all character marks - * @param last_boundclass - * Pointer to an integer variable containing - * the previous codepoint's boundary class if the @ref UTF8PROC_CHARBOUND - * option is used. Otherwise, this parameter is ignored. - * - * @return - * In case of success, the number of codepoints written is returned; in case - * of an error, a negative error code is returned (@ref utf8proc_errmsg). - * @par - * If the number of written codepoints would be bigger than `bufsize`, the - * required buffer size is returned, while the buffer will be overwritten with - * undefined data. - */ -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_decompose_char( - utf8proc_int32_t codepoint, utf8proc_int32_t *dst, utf8proc_ssize_t bufsize, - utf8proc_option_t options, int *last_boundclass -); - -/** - * The same as @ref utf8proc_decompose_char, but acts on a whole UTF-8 - * string and orders the decomposed sequences correctly. - * - * If the @ref UTF8PROC_NULLTERM flag in `options` is set, processing - * will be stopped, when a NULL byte is encounted, otherwise `strlen` - * bytes are processed. The result (in the form of 32-bit unicode - * codepoints) is written into the buffer being pointed to by - * `buffer` (which must contain at least `bufsize` entries). In case of - * success, the number of codepoints written is returned; in case of an - * error, a negative error code is returned (@ref utf8proc_errmsg). - * See @ref utf8proc_decompose_custom to supply additional transformations. - * - * If the number of written codepoints would be bigger than `bufsize`, the - * required buffer size is returned, while the buffer will be overwritten with - * undefined data. - */ -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_decompose( - const utf8proc_uint8_t *str, utf8proc_ssize_t strlen, - utf8proc_int32_t *buffer, utf8proc_ssize_t bufsize, utf8proc_option_t options -); - -/** - * The same as @ref utf8proc_decompose, but also takes a `custom_func` mapping function - * that is called on each codepoint in `str` before any other transformations - * (along with a `custom_data` pointer that is passed through to `custom_func`). - * The `custom_func` argument is ignored if it is `NULL`. See also @ref utf8proc_map_custom. - */ -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_decompose_custom( - const utf8proc_uint8_t *str, utf8proc_ssize_t strlen, - utf8proc_int32_t *buffer, utf8proc_ssize_t bufsize, utf8proc_option_t options, - utf8proc_custom_func custom_func, void *custom_data -); - -/** - * Normalizes the sequence of `length` codepoints pointed to by `buffer` - * in-place (i.e., the result is also stored in `buffer`). - * - * @param buffer the (native-endian UTF-32) unicode codepoints to re-encode. - * @param length the length (in codepoints) of the buffer. - * @param options a bitwise or (`|`) of one or more of the following flags: - * - @ref UTF8PROC_NLF2LS - convert LF, CRLF, CR and NEL into LS - * - @ref UTF8PROC_NLF2PS - convert LF, CRLF, CR and NEL into PS - * - @ref UTF8PROC_NLF2LF - convert LF, CRLF, CR and NEL into LF - * - @ref UTF8PROC_STRIPCC - strip or convert all non-affected control characters - * - @ref UTF8PROC_COMPOSE - try to combine decomposed codepoints into composite - * codepoints - * - @ref UTF8PROC_STABLE - prohibit combining characters that would violate - * the unicode versioning stability - * - * @return - * In case of success, the length (in codepoints) of the normalized UTF-32 string is - * returned; otherwise, a negative error code is returned (@ref utf8proc_errmsg). - * - * @warning The entries of the array pointed to by `str` have to be in the - * range `0x0000` to `0x10FFFF`. Otherwise, the program might crash! - */ -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_normalize_utf32(utf8proc_int32_t *buffer, utf8proc_ssize_t length, utf8proc_option_t options); - -/** - * Reencodes the sequence of `length` codepoints pointed to by `buffer` - * UTF-8 data in-place (i.e., the result is also stored in `buffer`). - * Can optionally normalize the UTF-32 sequence prior to UTF-8 conversion. - * - * @param buffer the (native-endian UTF-32) unicode codepoints to re-encode. - * @param length the length (in codepoints) of the buffer. - * @param options a bitwise or (`|`) of one or more of the following flags: - * - @ref UTF8PROC_NLF2LS - convert LF, CRLF, CR and NEL into LS - * - @ref UTF8PROC_NLF2PS - convert LF, CRLF, CR and NEL into PS - * - @ref UTF8PROC_NLF2LF - convert LF, CRLF, CR and NEL into LF - * - @ref UTF8PROC_STRIPCC - strip or convert all non-affected control characters - * - @ref UTF8PROC_COMPOSE - try to combine decomposed codepoints into composite - * codepoints - * - @ref UTF8PROC_STABLE - prohibit combining characters that would violate - * the unicode versioning stability - * - @ref UTF8PROC_CHARBOUND - insert 0xFF bytes before each grapheme cluster - * - * @return - * In case of success, the length (in bytes) of the resulting nul-terminated - * UTF-8 string is returned; otherwise, a negative error code is returned - * (@ref utf8proc_errmsg). - * - * @warning The amount of free space pointed to by `buffer` must - * exceed the amount of the input data by one byte, and the - * entries of the array pointed to by `str` have to be in the - * range `0x0000` to `0x10FFFF`. Otherwise, the program might crash! - */ -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_reencode(utf8proc_int32_t *buffer, utf8proc_ssize_t length, utf8proc_option_t options); - -/** - * Given a pair of consecutive codepoints, return whether a grapheme break is - * permitted between them (as defined by the extended grapheme clusters in UAX#29). - * - * @param state Beginning with Version 29 (Unicode 9.0.0), this algorithm requires - * state to break graphemes. This state can be passed in as a pointer - * in the `state` argument and should initially be set to 0. If the - * state is not passed in (i.e. a null pointer is passed), UAX#29 rules - * GB10/12/13 which require this state will not be applied, essentially - * matching the rules in Unicode 8.0.0. - * - * @warning If the state parameter is used, `utf8proc_grapheme_break_stateful` must - * be called IN ORDER on ALL potential breaks in a string. - */ -UTF8PROC_DLLEXPORT utf8proc_bool utf8proc_grapheme_break_stateful( - utf8proc_int32_t codepoint1, utf8proc_int32_t codepoint2, utf8proc_int32_t *state); - -/** - * Same as @ref utf8proc_grapheme_break_stateful, except without support for the - * Unicode 9 additions to the algorithm. Supported for legacy reasons. - */ -UTF8PROC_DLLEXPORT utf8proc_bool utf8proc_grapheme_break( - utf8proc_int32_t codepoint1, utf8proc_int32_t codepoint2); - - -/** - * Given a codepoint `c`, return the codepoint of the corresponding - * lower-case character, if any; otherwise (if there is no lower-case - * variant, or if `c` is not a valid codepoint) return `c`. - */ -UTF8PROC_DLLEXPORT utf8proc_int32_t utf8proc_tolower(utf8proc_int32_t c); - -/** - * Given a codepoint `c`, return the codepoint of the corresponding - * upper-case character, if any; otherwise (if there is no upper-case - * variant, or if `c` is not a valid codepoint) return `c`. - */ -UTF8PROC_DLLEXPORT utf8proc_int32_t utf8proc_toupper(utf8proc_int32_t c); - -/** - * Given a codepoint `c`, return the codepoint of the corresponding - * title-case character, if any; otherwise (if there is no title-case - * variant, or if `c` is not a valid codepoint) return `c`. - */ -UTF8PROC_DLLEXPORT utf8proc_int32_t utf8proc_totitle(utf8proc_int32_t c); - -/** - * Given a codepoint, return a character width analogous to `wcwidth(codepoint)`, - * except that a width of 0 is returned for non-printable codepoints - * instead of -1 as in `wcwidth`. - * - * @note - * If you want to check for particular types of non-printable characters, - * (analogous to `isprint` or `iscntrl`), use @ref utf8proc_category. */ -UTF8PROC_DLLEXPORT int utf8proc_charwidth(utf8proc_int32_t codepoint); - -/** - * Return the Unicode category for the codepoint (one of the - * @ref utf8proc_category_t constants.) - */ -UTF8PROC_DLLEXPORT utf8proc_category_t utf8proc_category(utf8proc_int32_t codepoint); - -/** - * Return the two-letter (nul-terminated) Unicode category string for - * the codepoint (e.g. `"Lu"` or `"Co"`). - */ -UTF8PROC_DLLEXPORT const char *utf8proc_category_string(utf8proc_int32_t codepoint); - -/** - * Maps the given UTF-8 string pointed to by `str` to a new UTF-8 - * string, allocated dynamically by `malloc` and returned via `dstptr`. - * - * If the @ref UTF8PROC_NULLTERM flag in the `options` field is set, - * the length is determined by a NULL terminator, otherwise the - * parameter `strlen` is evaluated to determine the string length, but - * in any case the result will be NULL terminated (though it might - * contain NULL characters with the string if `str` contained NULL - * characters). Other flags in the `options` field are passed to the - * functions defined above, and regarded as described. See also - * @ref utfproc_map_custom to supply a custom codepoint transformation. - * - * In case of success the length of the new string is returned, - * otherwise a negative error code is returned. - * - * @note The memory of the new UTF-8 string will have been allocated - * with `malloc`, and should therefore be deallocated with `free`. - */ -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_map( - const utf8proc_uint8_t *str, utf8proc_ssize_t strlen, utf8proc_uint8_t **dstptr, utf8proc_option_t options -); - -/** - * Like @ref utf8proc_map, but also takes a `custom_func` mapping function - * that is called on each codepoint in `str` before any other transformations - * (along with a `custom_data` pointer that is passed through to `custom_func`). - * The `custom_func` argument is ignored if it is `NULL`. - */ -UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_map_custom( - const utf8proc_uint8_t *str, utf8proc_ssize_t strlen, utf8proc_uint8_t **dstptr, utf8proc_option_t options, - utf8proc_custom_func custom_func, void *custom_data -); - -/** @name Unicode normalization - * - * Returns a pointer to newly allocated memory of a NFD, NFC, NFKD or NFKC - * normalized version of the null-terminated string `str`. These - * are shortcuts to calling @ref utf8proc_map with @ref UTF8PROC_NULLTERM - * combined with @ref UTF8PROC_STABLE and flags indicating the normalization. - */ -/** @{ */ -/** NFD normalization (@ref UTF8PROC_DECOMPOSE). */ -UTF8PROC_DLLEXPORT utf8proc_uint8_t *utf8proc_NFD(const utf8proc_uint8_t *str); -/** NFC normalization (@ref UTF8PROC_COMPOSE). */ -UTF8PROC_DLLEXPORT utf8proc_uint8_t *utf8proc_NFC(const utf8proc_uint8_t *str); -/** NFKD normalization (@ref UTF8PROC_DECOMPOSE and @ref UTF8PROC_COMPAT). */ -UTF8PROC_DLLEXPORT utf8proc_uint8_t *utf8proc_NFKD(const utf8proc_uint8_t *str); -/** NFKC normalization (@ref UTF8PROC_COMPOSE and @ref UTF8PROC_COMPAT). */ -UTF8PROC_DLLEXPORT utf8proc_uint8_t *utf8proc_NFKC(const utf8proc_uint8_t *str); -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/libdispatch/utf8proc.c b/libdispatch/utf8proc.c index c680678cff..3a05dd3b34 100644 --- a/libdispatch/utf8proc.c +++ b/libdispatch/utf8proc.c @@ -128,18 +128,18 @@ nc_utf8proc_ssize_t nc_utf8proc_iterate( *dst = uc; return 1; } - // Must be between 0xc2 and 0xf4 inclusive to be valid + /* Must be between 0xc2 and 0xf4 inclusive to be valid */ if ((uc - 0xc2) > (0xf4-0xc2)) return UTF8PROC_ERROR_INVALIDUTF8; - if (uc < 0xe0) { // 2-byte sequence - // Must have valid continuation character + if (uc < 0xe0) { /* 2-byte sequence */ + /* Must have valid continuation character */ if (str >= end || !utf_cont(*str)) return UTF8PROC_ERROR_INVALIDUTF8; *dst = ((uc & 0x1f)<<6) | (*str & 0x3f); return 2; } - if (uc < 0xf0) { // 3-byte sequence + if (uc < 0xf0) { /* 3-byte sequence */ if ((str + 1 >= end) || !utf_cont(*str) || !utf_cont(str[1])) return UTF8PROC_ERROR_INVALIDUTF8; - // Check for surrogate chars + /* Check for surrogate chars */ if (uc == 0xed && *str > 0x9f) return UTF8PROC_ERROR_INVALIDUTF8; uc = ((uc & 0xf)<<12) | ((*str & 0x3f)<<6) | (str[1] & 0x3f); @@ -148,11 +148,11 @@ nc_utf8proc_ssize_t nc_utf8proc_iterate( *dst = uc; return 3; } - // 4-byte sequence - // Must have 3 valid continuation characters + /* 4-byte sequence */ + /* Must have 3 valid continuation characters */ if ((str + 2 >= end) || !utf_cont(*str) || !utf_cont(str[1]) || !utf_cont(str[2])) return UTF8PROC_ERROR_INVALIDUTF8; - // Make sure in correct range (0x10000 - 0x10ffff) + /* Make sure in correct range (0x10000 - 0x10ffff) */ if (uc == 0xf0) { if (*str < 0x90) return UTF8PROC_ERROR_INVALIDUTF8; } else if (uc == 0xf4) { @@ -176,8 +176,8 @@ nc_utf8proc_ssize_t nc_utf8proc_iterate( dst[0] = (nc_utf8proc_uint8_t)(0xC0 + (uc >> 6)); dst[1] = (nc_utf8proc_uint8_t)(0x80 + (uc & 0x3F)); return 2; - // Note: we allow encoding 0xd800-0xdfff here, so as not to change - // the API, however, these are actually invalid in UTF-8 + /* Note: we allow encoding 0xd800-0xdfff here, so as not to change */ + /* the API, however, these are actually invalid in UTF-8 */ } else if (uc < 0x10000) { dst[0] = (nc_utf8proc_uint8_t)(0xE0 + (uc >> 12)); dst[1] = (nc_utf8proc_uint8_t)(0x80 + ((uc >> 6) & 0x3F)); @@ -254,36 +254,36 @@ static const nc_utf8proc_property_t *nc_unsafe_get_property(nc_utf8proc_int32_t */ static nc_utf8proc_bool nc_grapheme_break_simple(int lbc, int tbc) { return - (lbc == UTF8PROC_BOUNDCLASS_START) ? true : // GB1 - (lbc == UTF8PROC_BOUNDCLASS_CR && // GB3 - tbc == UTF8PROC_BOUNDCLASS_LF) ? false : // --- - (lbc >= UTF8PROC_BOUNDCLASS_CR && lbc <= UTF8PROC_BOUNDCLASS_CONTROL) ? true : // GB4 - (tbc >= UTF8PROC_BOUNDCLASS_CR && tbc <= UTF8PROC_BOUNDCLASS_CONTROL) ? true : // GB5 - (lbc == UTF8PROC_BOUNDCLASS_L && // GB6 - (tbc == UTF8PROC_BOUNDCLASS_L || // --- - tbc == UTF8PROC_BOUNDCLASS_V || // --- - tbc == UTF8PROC_BOUNDCLASS_LV || // --- - tbc == UTF8PROC_BOUNDCLASS_LVT)) ? false : // --- - ((lbc == UTF8PROC_BOUNDCLASS_LV || // GB7 - lbc == UTF8PROC_BOUNDCLASS_V) && // --- - (tbc == UTF8PROC_BOUNDCLASS_V || // --- - tbc == UTF8PROC_BOUNDCLASS_T)) ? false : // --- - ((lbc == UTF8PROC_BOUNDCLASS_LVT || // GB8 - lbc == UTF8PROC_BOUNDCLASS_T) && // --- - tbc == UTF8PROC_BOUNDCLASS_T) ? false : // --- - (tbc == UTF8PROC_BOUNDCLASS_EXTEND || // GB9 - tbc == UTF8PROC_BOUNDCLASS_ZWJ || // --- - tbc == UTF8PROC_BOUNDCLASS_SPACINGMARK || // GB9a - lbc == UTF8PROC_BOUNDCLASS_PREPEND) ? false : // GB9b - ((lbc == UTF8PROC_BOUNDCLASS_E_BASE || // GB10 (requires additional handling below) - lbc == UTF8PROC_BOUNDCLASS_E_BASE_GAZ) && // ---- - tbc == UTF8PROC_BOUNDCLASS_E_MODIFIER) ? false : // ---- - (lbc == UTF8PROC_BOUNDCLASS_ZWJ && // GB11 - (tbc == UTF8PROC_BOUNDCLASS_GLUE_AFTER_ZWJ || // ---- - tbc == UTF8PROC_BOUNDCLASS_E_BASE_GAZ)) ? false : // ---- - (lbc == UTF8PROC_BOUNDCLASS_REGIONAL_INDICATOR && // GB12/13 (requires additional handling below) - tbc == UTF8PROC_BOUNDCLASS_REGIONAL_INDICATOR) ? false : // ---- - true; // GB999 + (lbc == UTF8PROC_BOUNDCLASS_START) ? true : /* GB1 */ + (lbc == UTF8PROC_BOUNDCLASS_CR && /* GB3 */ + tbc == UTF8PROC_BOUNDCLASS_LF) ? false : /* --- */ + (lbc >= UTF8PROC_BOUNDCLASS_CR && lbc <= UTF8PROC_BOUNDCLASS_CONTROL) ? true : /* GB4 */ + (tbc >= UTF8PROC_BOUNDCLASS_CR && tbc <= UTF8PROC_BOUNDCLASS_CONTROL) ? true : /* GB5 */ + (lbc == UTF8PROC_BOUNDCLASS_L && /* GB6 */ + (tbc == UTF8PROC_BOUNDCLASS_L || /* --- */ + tbc == UTF8PROC_BOUNDCLASS_V || /* --- */ + tbc == UTF8PROC_BOUNDCLASS_LV || /* --- */ + tbc == UTF8PROC_BOUNDCLASS_LVT)) ? false : /* --- */ + ((lbc == UTF8PROC_BOUNDCLASS_LV || /* GB7 */ + lbc == UTF8PROC_BOUNDCLASS_V) && /* --- */ + (tbc == UTF8PROC_BOUNDCLASS_V || /* --- */ + tbc == UTF8PROC_BOUNDCLASS_T)) ? false : /* --- */ + ((lbc == UTF8PROC_BOUNDCLASS_LVT || /* GB8 */ + lbc == UTF8PROC_BOUNDCLASS_T) && /* --- */ + tbc == UTF8PROC_BOUNDCLASS_T) ? false : /* --- */ + (tbc == UTF8PROC_BOUNDCLASS_EXTEND || /* GB9 */ + tbc == UTF8PROC_BOUNDCLASS_ZWJ || /* --- */ + tbc == UTF8PROC_BOUNDCLASS_SPACINGMARK || /* GB9a */ + lbc == UTF8PROC_BOUNDCLASS_PREPEND) ? false : /* GB9b */ + ((lbc == UTF8PROC_BOUNDCLASS_E_BASE || /* GB10 (requires additional handling below) */ + lbc == UTF8PROC_BOUNDCLASS_E_BASE_GAZ) && /* ---- */ + tbc == UTF8PROC_BOUNDCLASS_E_MODIFIER) ? false : /* ---- */ + (lbc == UTF8PROC_BOUNDCLASS_ZWJ && /* GB11 */ + (tbc == UTF8PROC_BOUNDCLASS_GLUE_AFTER_ZWJ || /* ---- */ + tbc == UTF8PROC_BOUNDCLASS_E_BASE_GAZ)) ? false : /* ---- */ + (lbc == UTF8PROC_BOUNDCLASS_REGIONAL_INDICATOR && /* GB12/13 (requires additional handling below) */ + tbc == UTF8PROC_BOUNDCLASS_REGIONAL_INDICATOR) ? false : /* ---- */ + true; /* GB999 */ } static nc_utf8proc_bool nc_grapheme_break_extended(int lbc, int tbc, nc_utf8proc_int32_t *state) @@ -294,15 +294,15 @@ static nc_utf8proc_bool nc_grapheme_break_extended(int lbc, int tbc, nc_utf8proc lbc_override = *state; break_permitted = nc_grapheme_break_simple(lbc_override, tbc); if (state) { - // Special support for GB 12/13 made possible by GB999. After two RI - // class codepoints we want to force a break. Do this by resetting the - // second RI's bound class to UTF8PROC_BOUNDCLASS_OTHER, to force a break - // after that character according to GB999 (unless of course such a break is - // forbidden by a different rule such as GB9). + /* Special support for GB 12/13 made possible by GB999. After two RI */ + /* class codepoints we want to force a break. Do this by resetting the */ + /* second RI's bound class to UTF8PROC_BOUNDCLASS_OTHER, to force a break */ + /* after that character according to GB999 (unless of course such a break is */ + /* forbidden by a different rule such as GB9). */ if (*state == tbc && tbc == UTF8PROC_BOUNDCLASS_REGIONAL_INDICATOR) *state = UTF8PROC_BOUNDCLASS_OTHER; - // Special support for GB10. Fold any EXTEND codepoints into the previous - // boundclass if we're dealing with an emoji base boundclass. + /* Special support for GB10. Fold any EXTEND codepoints into the previous */ + /* boundclass if we're dealing with an emoji base boundclass. */ else if ((*state == UTF8PROC_BOUNDCLASS_E_BASE || *state == UTF8PROC_BOUNDCLASS_E_BASE_GAZ) && tbc == UTF8PROC_BOUNDCLASS_EXTEND) diff --git a/libdispatch/utf8proc.h b/libdispatch/utf8proc.h index 2d29524a77..1d0ccdd8a0 100644 --- a/libdispatch/utf8proc.h +++ b/libdispatch/utf8proc.h @@ -80,7 +80,7 @@ #include "ncexternl.h" #if defined(_MSC_VER) && _MSC_VER < 1800 -// MSVC prior to 2013 lacked stdbool.h and inttypes.h +/* MSVC prior to 2013 lacked stdbool.h and inttypes.h */ typedef signed char nc_utf8proc_int8_t; typedef unsigned char nc_utf8proc_uint8_t; typedef short nc_utf8proc_int16_t; @@ -95,7 +95,7 @@ typedef int nc_utf8proc_ssize_t; typedef unsigned int nc_utf8proc_size_t; # endif # ifndef __cplusplus -// emulate C99 bool +/* emulate C99 bool */ typedef unsigned char nc_utf8proc_bool; # ifndef __bool_true_false_are_defined # define false 0 @@ -380,7 +380,7 @@ typedef nc_utf8proc_int32_t (*nc_utf8proc_custom_func)(nc_utf8proc_int32_t codep * Array containing the byte lengths of a UTF-8 encoded codepoint based * on the first byte. */ -//const nc_utf8proc_int8_t nc_utf8proc_utf8class[256]; +/*const nc_utf8proc_int8_t nc_utf8proc_utf8class[256];*/ /** * Returns the utf8proc API version as a string MAJOR.MINOR.PATCH diff --git a/libhdf5/hdf5attr.c b/libhdf5/hdf5attr.c index b190585123..8c585df5ae 100644 --- a/libhdf5/hdf5attr.c +++ b/libhdf5/hdf5attr.c @@ -59,6 +59,77 @@ getattlist(NC_GRP_INFO_T *grp, int varid, NC_VAR_INFO_T **varp, return NC_NOERR; } +/** + * @internal Get one of three special attributes, NCPROPS, + * ISNETCDF4ATT, and SUPERBLOCKATT. These atts are not all really in + * the file, they are constructed on the fly. + * + * @param h5 Pointer to HDF5 file info struct. + * @param name Name of attribute. + * @param filetypep Pointer that gets type of the attribute data in + * file. + * @param mem_type Type of attribute data in memory. + * @param lenp Pointer that gets length of attribute array. + * @param attnump Pointer that gets the attribute number. + * @param data Attribute data. + * + * @return ::NC_NOERR No error. + * @return ::NC_EBADID Bad ncid. + * @return ::NC_ERANGE Data conversion out of range. + * @author Dennis Heimbigner + */ +int +nc4_get_att_special(NC_FILE_INFO_T* h5, const char* name, + nc_type* filetypep, nc_type mem_type, size_t* lenp, + int* attnump, void* data) +{ + /* Fail if asking for att id */ + if(attnump) + return NC_EATTMETA; + + if(strcmp(name,NCPROPS)==0) { + char* propdata = NULL; + int stat = NC_NOERR; + int len; + if(h5->provenance->propattr.version == 0) + return NC_ENOTATT; + if(mem_type == NC_NAT) mem_type = NC_CHAR; + if(mem_type != NC_CHAR) + return NC_ECHAR; + if(filetypep) *filetypep = NC_CHAR; + stat = NC4_buildpropinfo(&h5->provenance->propattr, &propdata); + if(stat != NC_NOERR) return stat; + len = strlen(propdata); + if(lenp) *lenp = len; + if(data) strncpy((char*)data,propdata,len+1); + free(propdata); + } else if(strcmp(name,ISNETCDF4ATT)==0 + || strcmp(name,SUPERBLOCKATT)==0) { + unsigned long long iv = 0; + if(filetypep) *filetypep = NC_INT; + if(lenp) *lenp = 1; + if(strcmp(name,SUPERBLOCKATT)==0) + iv = (unsigned long long)h5->provenance->superblockversion; + else /* strcmp(name,ISNETCDF4ATT)==0 */ + iv = NC4_isnetcdf4(h5); + if(mem_type == NC_NAT) mem_type = NC_INT; + if(data) + switch (mem_type) { + case NC_BYTE: *((char*)data) = (char)iv; break; + case NC_SHORT: *((short*)data) = (short)iv; break; + case NC_INT: *((int*)data) = (int)iv; break; + case NC_UBYTE: *((unsigned char*)data) = (unsigned char)iv; break; + case NC_USHORT: *((unsigned short*)data) = (unsigned short)iv; break; + case NC_UINT: *((unsigned int*)data) = (unsigned int)iv; break; + case NC_INT64: *((long long*)data) = (long long)iv; break; + case NC_UINT64: *((unsigned long long*)data) = (unsigned long long)iv; break; + default: + return NC_ERANGE; + } + } + return NC_NOERR; +} + /** * @internal I think all atts should be named the exact same thing, to * avoid confusion! @@ -727,17 +798,28 @@ NC4_HDF5_inq_att(int ncid, int varid, const char *name, nc_type *xtypep, NC_FILE_INFO_T *h5; NC_GRP_INFO_T *grp; NC_VAR_INFO_T *var = NULL; + char norm_name[NC_MAX_NAME + 1]; int retval; LOG((2, "%s: ncid 0x%x varid %d", __func__, ncid, varid)); /* Find the file, group, and var info, and do lazy att read if * needed. */ - if ((retval = nc4_hdf5_find_grp_var_att(ncid, varid, name, 0, 1, &h5, - &grp, &var, NULL))) + if ((retval = nc4_hdf5_find_grp_var_att(ncid, varid, name, 0, 1, norm_name, + &h5, &grp, &var, NULL))) return retval; - return nc4_get_att_ptrs(h5, grp, var, name, xtypep, NC_NAT, lenp, NULL, NULL); + /* If this is one of the reserved atts, use nc_get_att_special. */ + if (!var) + { + const NC_reservedatt *ra = NC_findreserved(norm_name); + if (ra && ra->flags & NAMEONLYFLAG) + return nc4_get_att_special(h5, norm_name, xtypep, NC_NAT, lenp, NULL, + NULL); + } + + return nc4_get_att_ptrs(h5, grp, var, norm_name, xtypep, NC_NAT, + lenp, NULL, NULL); } /** @@ -757,17 +839,28 @@ NC4_HDF5_inq_attid(int ncid, int varid, const char *name, int *attnump) NC_FILE_INFO_T *h5; NC_GRP_INFO_T *grp; NC_VAR_INFO_T *var = NULL; + char norm_name[NC_MAX_NAME + 1]; int retval; LOG((2, "%s: ncid 0x%x varid %d", __func__, ncid, varid)); /* Find the file, group, and var info, and do lazy att read if * needed. */ - if ((retval = nc4_hdf5_find_grp_var_att(ncid, varid, name, 0, 1, &h5, - &grp, &var, NULL))) + if ((retval = nc4_hdf5_find_grp_var_att(ncid, varid, name, 0, 1, norm_name, + &h5, &grp, &var, NULL))) return retval; - return nc4_get_att_ptrs(h5, grp, var, name, NULL, NC_NAT, NULL, attnump, NULL); + /* If this is one of the reserved atts, use nc_get_att_special. */ + if (!var) + { + const NC_reservedatt *ra = NC_findreserved(norm_name); + if (ra && ra->flags & NAMEONLYFLAG) + return nc4_get_att_special(h5, norm_name, NULL, NC_NAT, NULL, attnump, + NULL); + } + + return nc4_get_att_ptrs(h5, grp, var, norm_name, NULL, NC_NAT, + NULL, attnump, NULL); } /** @@ -793,7 +886,7 @@ NC4_HDF5_inq_attname(int ncid, int varid, int attnum, char *name) /* Find the file, group, and var info, and do lazy att read if * needed. */ if ((retval = nc4_hdf5_find_grp_var_att(ncid, varid, NULL, attnum, 0, NULL, - NULL, NULL, &att))) + NULL, NULL, NULL, &att))) return retval; assert(att); @@ -811,27 +904,41 @@ NC4_HDF5_inq_attname(int ncid, int varid, int attnum, char *name) * @param varid Variable ID. * @param name Name of attribute. * @param value Pointer that gets attribute data. - * @param memtype The type the data should be converted to as it is read. + * @param memtype The type the data should be converted to as it is + * read. * * @return ::NC_NOERR No error. * @return ::NC_EBADID Bad ncid. * @author Ed Hartnett */ int -NC4_HDF5_get_att(int ncid, int varid, const char *name, void *value, nc_type memtype) +NC4_HDF5_get_att(int ncid, int varid, const char *name, void *value, + nc_type memtype) { NC_FILE_INFO_T *h5; NC_GRP_INFO_T *grp; NC_VAR_INFO_T *var = NULL; + char norm_name[NC_MAX_NAME + 1]; int retval; LOG((2, "%s: ncid 0x%x varid %d", __func__, ncid, varid)); /* Find the file, group, and var info, and do lazy att read if * needed. */ - if ((retval = nc4_hdf5_find_grp_var_att(ncid, varid, name, 0, 1, &h5, - &grp, &var, NULL))) + if ((retval = nc4_hdf5_find_grp_var_att(ncid, varid, name, 0, 1, norm_name, + &h5, &grp, &var, NULL))) return retval; - return nc4_get_att_ptrs(h5, grp, var, name, NULL, memtype, NULL, NULL, value); + /* If this is one of the reserved atts, use nc_get_att_special. */ + if (!var) + { + const NC_reservedatt *ra = NC_findreserved(norm_name); + if (ra && ra->flags & NAMEONLYFLAG) + return nc4_get_att_special(h5, norm_name, NULL, NC_NAT, NULL, NULL, + value); + } + + return nc4_get_att_ptrs(h5, grp, var, norm_name, NULL, memtype, + NULL, NULL, value); } + diff --git a/libhdf5/hdf5cache.c b/libhdf5/hdf5cache.c index 5ae4a5ccc8..fcefa7456c 100644 --- a/libhdf5/hdf5cache.c +++ b/libhdf5/hdf5cache.c @@ -12,10 +12,11 @@ #include "config.h" #include "hdf5internal.h" -/* These hold the file caching settings for the library. */ -size_t nc4_chunk_cache_size = CHUNK_CACHE_SIZE; /**< Default chunk cache size. */ -size_t nc4_chunk_cache_nelems = CHUNK_CACHE_NELEMS; /**< Default chunk cache number of elements. */ -float nc4_chunk_cache_preemption = CHUNK_CACHE_PREEMPTION; /**< Default chunk cache preemption. */ +/* These are the default chunk cache sizes for HDF5 files created or + * opened with netCDF-4. */ +extern size_t nc4_chunk_cache_size; +extern size_t nc4_chunk_cache_nelems; +extern float nc4_chunk_cache_preemption; /** * Set chunk cache size. Only affects files opened/created *after* it diff --git a/libhdf5/hdf5dispatch.c b/libhdf5/hdf5dispatch.c index ec5e6a4b7f..7fcf723f91 100644 --- a/libhdf5/hdf5dispatch.c +++ b/libhdf5/hdf5dispatch.c @@ -98,7 +98,7 @@ NC4_def_var_fletcher32, NC4_def_var_chunking, NC4_def_var_endian, NC4_def_var_filter, -NC4_set_var_chunk_cache, +NC4_HDF5_set_var_chunk_cache, NC4_get_var_chunk_cache, #endif diff --git a/libhdf5/hdf5internal.c b/libhdf5/hdf5internal.c index f661c8a958..5752e9ea92 100644 --- a/libhdf5/hdf5internal.c +++ b/libhdf5/hdf5internal.c @@ -661,6 +661,9 @@ nc4_rec_grp_HDF5_del(NC_GRP_INFO_T *grp) * @param attnum Number of attribute. * @param use_name If true, use the name to get the * attribute. Otherwise use the attnum. + * @param norm_name Pointer to storage of size NC_MAX_NAME + 1, + * which will get the normalized name, if use_name is true. Ignored if + * NULL. * @param h5 Pointer to pointer that gets file info struct. Ignored if * NULL. * @param grp Pointer to pointer that gets group info struct. Ignored @@ -678,7 +681,7 @@ nc4_rec_grp_HDF5_del(NC_GRP_INFO_T *grp) */ int nc4_hdf5_find_grp_var_att(int ncid, int varid, const char *name, int attnum, - int use_name, NC_FILE_INFO_T **h5, + int use_name, char *norm_name, NC_FILE_INFO_T **h5, NC_GRP_INFO_T **grp, NC_VAR_INFO_T **var, NC_ATT_INFO_T **att) { @@ -686,12 +689,17 @@ nc4_hdf5_find_grp_var_att(int ncid, int varid, const char *name, int attnum, NC_GRP_INFO_T *my_grp; NC_VAR_INFO_T *my_var = NULL; NC_ATT_INFO_T *my_att; + char my_norm_name[NC_MAX_NAME + 1] = ""; NCindex *attlist = NULL; int retval; LOG((4, "%s: ncid %d varid %d attnum %d use_name %d", __func__, ncid, varid, attnum, use_name)); + /* Don't need to provide name unless getting att pointer and using + * use_name. */ + assert(!att || ((use_name && name) || !use_name)); + /* Find info for this file, group, and h5 info. */ if ((retval = nc4_find_nc_grp_h5(ncid, NULL, &my_grp, &my_h5))) return retval; @@ -721,16 +729,27 @@ nc4_hdf5_find_grp_var_att(int ncid, int varid, const char *name, int attnum, } assert(attlist); + /* Need a name if use_name is true. */ + if (use_name && !name) + return NC_EBADNAME; + + /* Normalize the name. */ + if (use_name) + if ((retval = nc4_normalize_name(name, my_norm_name))) + return retval; + /* Now find the attribute by name or number. */ if (att) { - my_att = use_name ? (NC_ATT_INFO_T *)ncindexlookup(attlist, name) : + my_att = use_name ? (NC_ATT_INFO_T *)ncindexlookup(attlist, my_norm_name) : (NC_ATT_INFO_T *)ncindexith(attlist, attnum); if (!my_att) return NC_ENOTATT; } /* Give the people what they want. */ + if (norm_name) + strncpy(norm_name, my_norm_name, NC_MAX_NAME); if (h5) *h5 = my_h5; if (grp) diff --git a/libhdf5/hdf5var.c b/libhdf5/hdf5var.c index c074d9f3b5..57333739ac 100644 --- a/libhdf5/hdf5var.c +++ b/libhdf5/hdf5var.c @@ -106,7 +106,7 @@ check_chunksizes(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var, const size_t *chunksize * @returns ::NC_NOERR for success * @returns ::NC_EBADID Bad ncid. * @returns ::NC_ENOTVAR Invalid variable ID. - * @author Ed Hartnett + * @author Ed Hartnett, Dennis Heimbigner */ static int nc4_find_default_chunksizes2(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var) @@ -570,11 +570,9 @@ nc_def_var_extra(int ncid, int varid, int *shuffle, int *deflate, const size_t *chunksizes, int *no_fill, const void *fill_value, int *endianness) { - NC *nc; NC_GRP_INFO_T *grp; NC_FILE_INFO_T *h5; NC_VAR_INFO_T *var; - NC_FILE_INFO_T *nc4_info=NULL; int d; int retval; @@ -585,26 +583,23 @@ nc_def_var_extra(int ncid, int varid, int *shuffle, int *deflate, LOG((2, "%s: ncid 0x%x varid %d", __func__, ncid, varid)); /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) + if ((retval = nc4_find_nc_grp_h5(ncid, NULL, &grp, &h5))) return retval; - assert(nc && grp && h5); + assert(grp && h5); /* Trying to write to a read-only file? No way, Jose! */ if (h5->no_write) return NC_EPERM; /* Find the var. */ - var = (NC_VAR_INFO_T*)ncindexith(grp->vars,varid); - if(!var) + if (!(var = (NC_VAR_INFO_T *)ncindexith(grp->vars, varid))) return NC_ENOTVAR; assert(var && var->hdr.id == varid); /* Can't turn on parallel and deflate/fletcher32/szip/shuffle. */ - nc4_info = NC4_DATA(nc); - if (nc4_info->parallel == NC_TRUE) { + if (h5->parallel == NC_TRUE) if (deflate || fletcher32 || shuffle) return NC_EINVAL; - } /* If the HDF5 dataset has already been created, then it is too * late to set all the extra stuff. */ @@ -734,7 +729,8 @@ nc_def_var_extra(int ncid, int varid, int *shuffle, int *deflate, return retval; /* Create a _FillValue attribute. */ - if ((retval = nc_put_att(ncid, varid, _FillValue, var->type_info->hdr.id, 1, fill_value))) + if ((retval = nc_put_att(ncid, varid, _FillValue, var->type_info->hdr.id, + 1, fill_value))) return retval; } @@ -2072,8 +2068,8 @@ NC4_HDF5_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep, /* Find the file, group, and var info, and do lazy att read if * needed. */ - if ((retval = nc4_hdf5_find_grp_var_att(ncid, varid, name, 0, 1, &h5, - &grp, &var, NULL))) + if ((retval = nc4_hdf5_find_grp_var_att(ncid, varid, NULL, 0, 0, NULL, + &h5, &grp, &var, NULL))) return retval; assert(grp && h5); @@ -2084,3 +2080,89 @@ NC4_HDF5_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep, contiguousp, chunksizesp, no_fill, fill_valuep, endiannessp, idp, nparamsp, params); } + +/** + * @internal Set chunk cache size for a variable. This is the internal + * function called by nc_set_var_chunk_cache(). + * + * @param ncid File ID. + * @param varid Variable ID. + * @param size Size in bytes to set cache. + * @param nelems Number of elements in cache. + * @param preemption Controls cache swapping. + * + * @returns ::NC_NOERR No error. + * @returns ::NC_EBADID Bad ncid. + * @returns ::NC_ENOTVAR Invalid variable ID. + * @returns ::NC_ESTRICTNC3 Attempting netcdf-4 operation on strict nc3 netcdf-4 file. + * @returns ::NC_EINVAL Invalid input. + * @returns ::NC_EHDFERR HDF5 error. + * @author Ed Hartnett + */ +int +NC4_HDF5_set_var_chunk_cache(int ncid, int varid, size_t size, size_t nelems, + float preemption) +{ + NC_GRP_INFO_T *grp; + NC_FILE_INFO_T *h5; + NC_VAR_INFO_T *var; + int retval; + + /* Check input for validity. */ + if (preemption < 0 || preemption > 1) + return NC_EINVAL; + + /* Find info for this file and group, and set pointer to each. */ + if ((retval = nc4_find_nc_grp_h5(ncid, NULL, &grp, &h5))) + return retval; + assert(grp && h5); + + /* Find the var. */ + if (!(var = (NC_VAR_INFO_T *)ncindexith(grp->vars, varid))) + return NC_ENOTVAR; + assert(var && var->hdr.id == varid); + + /* Set the values. */ + var->chunk_cache_size = size; + var->chunk_cache_nelems = nelems; + var->chunk_cache_preemption = preemption; + + /* Reopen the dataset to bring new settings into effect. */ + if ((retval = nc4_reopen_dataset(grp, var))) + return retval; + return NC_NOERR; +} + +/** + * @internal A wrapper for NC4_set_var_chunk_cache(), we need this + * version for fortran. Negative values leave settings as they are. + * + * @param ncid File ID. + * @param varid Variable ID. + * @param size Size in bytes to set cache. + * @param nelems Number of elements in cache. + * @param preemption Controls cache swapping. + * + * @returns ::NC_NOERR for success + * @author Ed Hartnett + */ +int +nc_set_var_chunk_cache_ints(int ncid, int varid, int size, int nelems, + int preemption) +{ + size_t real_size = H5D_CHUNK_CACHE_NBYTES_DEFAULT; + size_t real_nelems = H5D_CHUNK_CACHE_NSLOTS_DEFAULT; + float real_preemption = CHUNK_CACHE_PREEMPTION; + + if (size >= 0) + real_size = ((size_t) size) * MEGABYTE; + + if (nelems >= 0) + real_nelems = nelems; + + if (preemption >= 0) + real_preemption = preemption / 100.; + + return NC4_HDF5_set_var_chunk_cache(ncid, varid, real_size, real_nelems, + real_preemption); +} diff --git a/libhdf5/nc4hdf.c b/libhdf5/nc4hdf.c index a565e7e4c0..9401a0d829 100644 --- a/libhdf5/nc4hdf.c +++ b/libhdf5/nc4hdf.c @@ -1,4 +1,4 @@ -/* Copyright 2003, University Corporation for Atmospheric +/* Copyright 2018, University Corporation for Atmospheric * Research. See the COPYRIGHT file for copying and redistribution * conditions. */ /** @@ -2318,72 +2318,6 @@ nc4_rec_match_dimscales(NC_GRP_INFO_T *grp) return retval; } -/** - * @internal Get the length, in bytes, of one element of a type in - * memory. - * - * @param h5 Pointer to HDF5 file info struct. - * @param xtype NetCDF type ID. - * @param len Pointer that gets length in bytes. - * - * @returns NC_NOERR No error. - * @returns NC_EBADTYPE Type not found. - * @author Ed Hartnett - */ -int -nc4_get_typelen_mem(NC_FILE_INFO_T *h5, nc_type xtype, size_t *len) -{ - NC_TYPE_INFO_T *type; - int retval; - - LOG((4, "%s xtype: %d", __func__, xtype)); - assert(len); - - /* If this is an atomic type, the answer is easy. */ - switch (xtype) - { - case NC_BYTE: - case NC_CHAR: - case NC_UBYTE: - *len = sizeof(char); - return NC_NOERR; - case NC_SHORT: - case NC_USHORT: - *len = sizeof(short); - return NC_NOERR; - case NC_INT: - case NC_UINT: - *len = sizeof(int); - return NC_NOERR; - case NC_FLOAT: - *len = sizeof(float); - return NC_NOERR; - case NC_DOUBLE: - *len = sizeof(double); - return NC_NOERR; - case NC_INT64: - case NC_UINT64: - *len = sizeof(long long); - return NC_NOERR; - case NC_STRING: - *len = sizeof(char *); - return NC_NOERR; - } - - /* See if var is compound type. */ - if ((retval = nc4_find_type(h5, xtype, &type))) - return retval; - - if (!type) - return NC_EBADTYPE; - - *len = type->size; - - LOG((5, "type->size: %d", type->size)); - - return NC_NOERR; -} - /** * @internal Get the class of a type * @@ -2791,4 +2725,3 @@ NC4_walk(hid_t gid, int* countp) } return ncstat; } - diff --git a/libhdf5/nc4info.c b/libhdf5/nc4info.c index 92ee18edff..fc29d8e0bb 100644 --- a/libhdf5/nc4info.c +++ b/libhdf5/nc4info.c @@ -2,7 +2,7 @@ * @file * @internal Add provenance info for netcdf-4 files. * - * Copyright 2010, UCAR/Unidata See netcdf/COPYRIGHT file for copying + * Copyright 2018, UCAR/Unidata See netcdf/COPYRIGHT file for copying * and redistribution conditions. * @author Dennis Heimbigner */ @@ -73,7 +73,7 @@ NC4_provenance_init(void) {stat = NC_ENOMEM; goto done;} nclistpush(globalpropinfo.properties,value); value = NULL; - + /* Insert the HDF5 as underlying storage format library */ if((name = strdup(NCPHDF5LIB2)) == NULL) {stat = NC_ENOMEM; goto done;} @@ -109,7 +109,7 @@ NC4_provenance_init(void) if(name != NULL) free(name); if(value != NULL) free(value); if(other != NULL) - nclistfreeall(other); + nclistfreeall(other); if(stat && globalpropinfo.properties != NULL) { nclistfreeall(globalpropinfo.properties); globalpropinfo.properties = NULL; @@ -192,7 +192,7 @@ properties_parse(const char* text0, NClist* pairs) *q++ = '\0'; next = q; /* split key and value */ - q = locate(p,'='); + q = locate(p,'='); name = p; *q++ = '\0'; value = q; @@ -258,10 +258,12 @@ NC4_buildpropinfo(struct NCPROPINFO* info, char** propdatap) NCbytes* buffer = NULL; char sversion[64]; + LOG((3, "%s", __func__)); + if(info == NULL || info->version == 0 || propdatap == NULL) {stat = NC_EINVAL; goto done;} - *propdatap = NULL; + *propdatap = NULL; buffer = ncbytesnew(); if(!buffer) {stat = NC_ENOMEM; goto done;} @@ -291,50 +293,6 @@ NC4_buildpropinfo(struct NCPROPINFO* info, char** propdatap) return stat; } -#if 0 -/** - * @internal Write the properties attribute to file. - * - * @param h5 Pointer to HDF5 file info struct. - * - * @return ::NC_NOERR No error. - * @author Dennis Heimbigner - */ -int -NC4_put_ncproperties(NC_FILE_INFO_T* file) -{ - int ncstat = NC_NOERR; - char* text = NULL; - - /* Get root group */ - grp = ((NC_HDF5_GRP_INFO_T *)(h5->root_grp->format_grp_info))->hdf_grpid; - /* See if the NCPROPS attribute exists */ - if(H5Aexists(grp,NCPROPS) <= 0) { /* Does not exist */ - ncstat = NC4_buildpropinfo(&h5->fileinfo->propattr,&text); - if(text == NULL || ncstat != NC_NOERR) { - goto done; - } - /* Create a datatype to refer to. */ - HCHECK((atype = H5Tcopy(H5T_C_S1))); - HCHECK((H5Tset_cset(atype, H5T_CSET_ASCII))); - HCHECK((H5Tset_size(atype, strlen(text)+1))); /*keep nul term */ - HCHECK((aspace = H5Screate(H5S_SCALAR))); - HCHECK((attid = H5Acreate(grp, NCPROPS, atype, aspace, H5P_DEFAULT))); - HCHECK((H5Awrite(attid, atype, text))); - } - done: - if(text != NULL) { - free(text); - text = NULL; - } - - if(attid >= 0) HCHECK((H5Aclose(attid))); - if(aspace >= 0) HCHECK((H5Sclose(aspace))); - if(atype >= 0) HCHECK((H5Tclose(atype))); - return ncstat; -} -#endif - /** * @internal * @@ -357,7 +315,10 @@ NC4_set_provenance(NC_FILE_INFO_T* file, const struct NCPROPINFO* dfalt) struct NCPROVENANCE* provenance = NULL; int superblock = -1; + LOG((3, "%s: ncid 0x%x", __func__, file->root_grp->hdr.id)); + assert(file->provenance == NULL); + provenance = calloc(1,sizeof(struct NCPROVENANCE)); if(provenance == NULL) {ncstat = NC_ENOMEM; goto done;} @@ -420,6 +381,8 @@ NC4_get_provenance(NC_FILE_INFO_T* file, const char* propstring, const struct NC int v = 0; int superblock = -1; + LOG((3, "%s: ncid 0x%x propstring %s", __func__, file->root_grp->hdr.id, propstring)); + assert(file->provenance == NULL); if((file->provenance = calloc(1,sizeof(struct NCPROVENANCE))) == NULL) {ncstat = NC_ENOMEM; goto done;} @@ -454,7 +417,6 @@ NC4_get_provenance(NC_FILE_INFO_T* file, const char* propstring, const struct NC provenance->propattr.version = v; } else {ncstat = NC_EINVAL; goto done;} /* bad _NCProperties attribute */ -#if 0 /* Now, rebuild from version 1 to version 2 if necessary */ if(provenance->propattr.version == 1) { int i; @@ -469,10 +431,9 @@ NC4_get_provenance(NC_FILE_INFO_T* file, const char* propstring, const struct NC else continue; /* ignore */ /* Do any rename */ nclistset(list,i,strdup(newname)); - if(name) free(name); + if(name) {free(name); name = NULL;} } } -#endif } done: if(name != NULL) free(name); @@ -492,6 +453,8 @@ NC4_get_provenance(NC_FILE_INFO_T* file, const char* propstring, const struct NC int NC4_free_provenance(struct NCPROVENANCE* prov) { + LOG((3, "%s", __func__)); + if(prov == NULL) return NC_NOERR; if(prov->propattr.properties != NULL) nclistfreeall(prov->propattr.properties); @@ -514,10 +477,12 @@ NC4_read_ncproperties(NC_FILE_INFO_T* h5) H5T_class_t t_class; hsize_t size; + LOG((3, "%s", __func__)); + hdf5grpid = ((NC_HDF5_GRP_INFO_T *)(h5->root_grp->format_grp_info))->hdf_grpid; if(H5Aexists(hdf5grpid,NCPROPS) <= 0) { /* Does not exist */ - /* File did not contain a _NCProperties attribute */ + /* File did not contain a _NCProperties attribute */ retval=NC4_get_provenance(h5,NULL,&globalpropinfo); goto done; } @@ -556,9 +521,11 @@ NC4_read_ncproperties(NC_FILE_INFO_T* h5) if(ntype > 0 && H5Tclose(ntype) < 0) retval = NC_EHDFERR; /* For certain errors, actually fail, else log that attribute was invalid and ignore */ - if(retval != NC_ENOMEM && retval != NC_EHDFERR) { - LOG((0,"Invalid _NCProperties attribute")); - retval = NC_NOERR; + if(retval != NC_NOERR) { + if(retval != NC_ENOMEM && retval != NC_EHDFERR) { + LOG((0,"Invalid _NCProperties attribute: ignored")); + retval = NC_NOERR; + } } return retval; } @@ -574,6 +541,8 @@ NC4_write_ncproperties(NC_FILE_INFO_T* h5) char* text = NULL; size_t len = 0; + LOG((3, "%s", __func__)); + /* If the file is read-only, return an error. */ if (h5->no_write) {retval = NC_EPERM; goto done;} @@ -594,12 +563,11 @@ NC4_write_ncproperties(NC_FILE_INFO_T* h5) {retval = NC_EHDFERR; goto done;} if(H5Tset_cset(atype, H5T_CSET_ASCII) < 0) {retval = NC_EHDFERR; goto done;} - - /* Create NCPROPS attribute */ - len = strlen(text); if(H5Tset_size(atype, len) < 0) {retval = NC_EFILEMETA; goto done;} + + /* Create NCPROPS attribute */ if((aspace = H5Screate(H5S_SCALAR)) < 0) {retval = NC_EFILEMETA; goto done;} if ((attid = H5Acreate(hdf5grpid, NCPROPS, atype, aspace, H5P_DEFAULT)) < 0) @@ -607,6 +575,19 @@ NC4_write_ncproperties(NC_FILE_INFO_T* h5) if (H5Awrite(attid, atype, text) < 0) {retval = NC_EFILEMETA; goto done;} +/* Verify */ +#if 0 +{ + hid_t spacev, typev; + hsize_t dsize, tsize; + typev = H5Aget_type(attid); + spacev = H5Aget_space(attid); + dsize = H5Aget_storage_size(attid); + tsize = H5Tget_size(typev); + fprintf(stderr,"dsize=%lu tsize=%lu\n",(unsigned long)dsize,(unsigned long)tsize); +} +#endif + done: if(text != NULL) free(text); /* Close out the HDF5 objects */ @@ -641,7 +622,7 @@ ncprintpropinfo(struct NCPROPINFO* info) char* name = nclistget(info->properties,i); char* value = nclistget(info->properties,i+1); fprintf(stderr,"\t[%d] name=|%s| value=|%s|\n",i,name,value); - } + } } void @@ -651,3 +632,48 @@ ncprintprovenance(struct NCPROVENANCE* prov) ncprintpropinfo(&prov->propattr); } +#if 0 +/** + * @internal Write the properties attribute to file. + * + * @param h5 Pointer to HDF5 file info struct. + * + * @return ::NC_NOERR No error. + * @author Dennis Heimbigner + */ +int +NC4_put_ncproperties(NC_FILE_INFO_T* file) +{ + int ncstat = NC_NOERR; + char* text = NULL; + + LOG((3, "%s: ncid 0x%x", __func__, file->root_grp->hdr.id); + + /* Get root group */ + grp = ((NC_HDF5_GRP_INFO_T *)(h5->root_grp->format_grp_info))->hdf_grpid; + /* See if the NCPROPS attribute exists */ + if(H5Aexists(grp,NCPROPS) <= 0) { /* Does not exist */ + ncstat = NC4_buildpropinfo(&h5->fileinfo->propattr,&text); + if(text == NULL || ncstat != NC_NOERR) { + goto done; + } + /* Create a datatype to refer to. */ + HCHECK((atype = H5Tcopy(H5T_C_S1))); + HCHECK((H5Tset_cset(atype, H5T_CSET_ASCII))); + HCHECK((H5Tset_size(atype, strlen(text)+1))); /*keep nul term */ + HCHECK((aspace = H5Screate(H5S_SCALAR))); + HCHECK((attid = H5Acreate(grp, NCPROPS, atype, aspace, H5P_DEFAULT))); + HCHECK((H5Awrite(attid, atype, text))); + } + done: + if(text != NULL) { + free(text); + text = NULL; + } + + if(attid >= 0) HCHECK((H5Aclose(attid))); + if(aspace >= 0) HCHECK((H5Sclose(aspace))); + if(atype >= 0) HCHECK((H5Tclose(atype))); + return ncstat; +} +#endif diff --git a/liblib/CMakeLists.txt b/liblib/CMakeLists.txt index b8c5f1dbc1..ea9b02949d 100644 --- a/liblib/CMakeLists.txt +++ b/liblib/CMakeLists.txt @@ -1,4 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. +# See netcdf-c/COPYRIGHT file for more info. SET(liblib_LIBS dispatch netcdf3) ##### @@ -8,7 +13,7 @@ SET(liblib_LIBS dispatch netcdf3) IF(USE_HDF5 OR USE_NETCDF4) SET(liblib_LIBS ${liblib_LIBS} netcdf4) SET(liblib_LIBS ${liblib_LIBS} netcdfhdf5) - + ENDIF() IF(USE_PNETCDF) diff --git a/liblib/Makefile.am b/liblib/Makefile.am index 02c0599fea..0a0bab73d7 100644 --- a/liblib/Makefile.am +++ b/liblib/Makefile.am @@ -1,5 +1,5 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2010, see the COPYRIGHT file for more information. +# Copyright 2018, see the COPYRIGHT file for more information. # This Makefile assembles the correct libnetcdf based on various # configure flags. It is assumed that all the relevant convenience @@ -41,7 +41,7 @@ libnetcdf_la_LIBADD += ${top_builddir}/libsrcp/libnetcdfp.la endif # USE_PNETCDF # + hdf5 -if USE_NETCDF4 +if USE_HDF5 AM_CPPFLAGS += -I${top_srcdir}/libhdf5 libnetcdf_la_LIBADD += ${top_builddir}/libhdf5/libnchdf5.la endif # USE_NETCDF4 @@ -66,10 +66,8 @@ endif # ENABLE_DAP4 # NetCDF-4 ... if USE_NETCDF4 - AM_CPPFLAGS += -I${top_srcdir}/libsrc4 libnetcdf_la_LIBADD += ${top_builddir}/libsrc4/libnetcdf4.la - endif #USE_NETCDF4 if ISCYGWIN diff --git a/liblib/nc_initialize.c b/liblib/nc_initialize.c index 04d336798b..3be13369a4 100644 --- a/liblib/nc_initialize.c +++ b/liblib/nc_initialize.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2010, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ @@ -17,6 +17,7 @@ extern int NC3_finalize(void); #ifdef USE_NETCDF4 #include "nc4internal.h" +#include "hdf5internal.h" extern int NC4_initialize(void); extern int NC4_finalize(void); #endif @@ -91,10 +92,10 @@ nc_initialize() #endif #ifdef USE_NETCDF4 if((stat = NC4_initialize())) goto done; - stat = NC4_provenance_init(); #endif /* USE_NETCDF4 */ #ifdef USE_HDF5 if((stat = NC_HDF5_initialize())) goto done; + stat = NC4_provenance_init(); #endif #ifdef USE_HDF4 if((stat = NC_HDF4_initialize())) goto done; diff --git a/libnetcdf.settings.in b/libnetcdf.settings.in index 29f734e9bc..56f552d892 100644 --- a/libnetcdf.settings.in +++ b/libnetcdf.settings.in @@ -26,6 +26,7 @@ Extra libraries: @LIBS@ -------- NetCDF-2 API: @HAS_NC2@ HDF4 Support: @HAS_HDF4@ +HDF5 Support: @HAS_HDF5@ NetCDF-4 API: @HAS_NC4@ NC-4 Parallel Support: @HAS_PARALLEL4@ PnetCDF Support: @HAS_PNETCDF@ diff --git a/libsrc/CMakeLists.txt b/libsrc/CMakeLists.txt index e617b17e97..fc4cf0703f 100644 --- a/libsrc/CMakeLists.txt +++ b/libsrc/CMakeLists.txt @@ -1,5 +1,5 @@ ## This is a CMake file, part of Unidata's netCDF package. -# Copyright 2012-2013, see the COPYRIGHT file for more information. +# Copyright 2012-2018, see the COPYRIGHT file for more information. # Process these files with m4. SET(m4_SOURCES attr ncx putget t_ncxx) diff --git a/libsrc/Makefile.am b/libsrc/Makefile.am index 498673e40a..fd13299fcd 100644 --- a/libsrc/Makefile.am +++ b/libsrc/Makefile.am @@ -1,5 +1,5 @@ ## This is an automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. +# Copyright 2008, see the COPYRIGHT file for more information. # This automake file is in charge of building the libsrc directory, # which contains the classic library code. diff --git a/libsrc/attr.m4 b/libsrc/attr.m4 index 44da9084b6..94bebf2386 100644 --- a/libsrc/attr.m4 +++ b/libsrc/attr.m4 @@ -5,7 +5,7 @@ dnl If you see this line, you can ignore the next one. /* Do not edit this file. It is produced from the corresponding .m4 source */ dnl /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ @@ -843,17 +843,19 @@ NC3_put_att( for more information. */ -// if (varid != NC_GLOBAL && !strcmp(name, _FillValue)) { -// /* Fill value must be of the same data type */ -// if (type != ncp->vars.value[varid]->type) return NC_EBADTYPE; -// -// /* Fill value must have exactly one value */ -// if (nelems != 1) return NC_EINVAL; -// -// /* Only allow for variables defined in initial define mode */ -// if (ncp->old != NULL && varid < ncp->old->vars.nelems) -// return NC_ELATEFILL; /* try put attribute for an old variable */ -// } +#if 0 + if (varid != NC_GLOBAL && !strcmp(name, _FillValue)) { + /* Fill value must be of the same data type */ + if (type != ncp->vars.value[varid]->type) return NC_EBADTYPE; + + /* Fill value must have exactly one value */ + if (nelems != 1) return NC_EINVAL; + + /* Only allow for variables defined in initial define mode */ + if (ncp->old != NULL && varid < ncp->old->vars.nelems) + return NC_ELATEFILL; /* try put attribute for an old variable */ + } +#endif attrpp = NC_findattr(ncap, name); diff --git a/libsrc/dim.c b/libsrc/dim.c index 14114ec06c..227ac5ab5c 100644 --- a/libsrc/dim.c +++ b/libsrc/dim.c @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ /* $Id: dim.c,v 1.83 2010/05/25 17:54:15 dmh Exp $ */ diff --git a/libsrc/ffio.c b/libsrc/ffio.c index e2ba64f70e..80bc6cb930 100644 --- a/libsrc/ffio.c +++ b/libsrc/ffio.c @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ /* $Id: ffio.c,v 1.56 2006/09/15 20:40:30 ed Exp $ */ diff --git a/libsrc/memio.c b/libsrc/memio.c index 09d4b62511..35bcd5738c 100644 --- a/libsrc/memio.c +++ b/libsrc/memio.c @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ diff --git a/libsrc/mmapio.c b/libsrc/mmapio.c index 98e4dadbbb..a05e3afa9f 100644 --- a/libsrc/mmapio.c +++ b/libsrc/mmapio.c @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ diff --git a/libsrc/nc3dispatch.c b/libsrc/nc3dispatch.c index 19f1756d00..41cf55346b 100644 --- a/libsrc/nc3dispatch.c +++ b/libsrc/nc3dispatch.c @@ -1,5 +1,5 @@ /********************************************************************* - Copyright 2010, UCAR/Unidata See netcdf/COPYRIGHT file for + Copyright 2018, UCAR/Unidata See netcdf/COPYRIGHT file for copying and redistribution conditions. $Id: nc3dispatch.c,v 2.8 2010/05/26 11:11:26 ed Exp $ diff --git a/libsrc/nc3internal.c b/libsrc/nc3internal.c index 704e739137..dbac0a4b43 100644 --- a/libsrc/nc3internal.c +++ b/libsrc/nc3internal.c @@ -1,5 +1,5 @@ /* - * Copyright 1996, Unuiversity Corporation for Atmospheric Research + * Copyright 2018, Unuiversity Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ diff --git a/libsrc/ncFile.c b/libsrc/ncFile.c index 4db35cbd5c..aed7dc16d4 100644 --- a/libsrc/ncFile.c +++ b/libsrc/ncFile.c @@ -1,5 +1,5 @@ /* - * Copyright 2012, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ diff --git a/libsrc/ncio.c b/libsrc/ncio.c index 20f5546b5c..cc67cddad0 100644 --- a/libsrc/ncio.c +++ b/libsrc/ncio.c @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ diff --git a/libsrc/ncio.h b/libsrc/ncio.h index 71dc640d39..6e3c17f76d 100644 --- a/libsrc/ncio.h +++ b/libsrc/ncio.h @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ /* $Id: ncio.h,v 1.27 2006/01/03 04:56:28 russ Exp $ */ diff --git a/libsrc/ncstdio.c b/libsrc/ncstdio.c index dd69501f7d..b7107a001e 100644 --- a/libsrc/ncstdio.c +++ b/libsrc/ncstdio.c @@ -1,5 +1,5 @@ /* - * Copyright 2012, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ diff --git a/libsrc/ncstdio.h b/libsrc/ncstdio.h index ba88539106..b50f8c01f7 100644 --- a/libsrc/ncstdio.h +++ b/libsrc/ncstdio.h @@ -1,5 +1,5 @@ /* - * Copyright 2012, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ diff --git a/libsrc/ncx.h b/libsrc/ncx.h index a9ffcdc633..13e463dd5c 100644 --- a/libsrc/ncx.h +++ b/libsrc/ncx.h @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ diff --git a/libsrc/ncx_cray.c b/libsrc/ncx_cray.c index ce56ed9400..4398ca904b 100644 --- a/libsrc/ncx_cray.c +++ b/libsrc/ncx_cray.c @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. * */ diff --git a/libsrc/posixio.c b/libsrc/posixio.c index 06b80050e4..328b13aaf6 100644 --- a/libsrc/posixio.c +++ b/libsrc/posixio.c @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ /* $Id: posixio.c,v 1.89 2010/05/22 21:59:08 dmh Exp $ */ diff --git a/libsrc/putget.m4 b/libsrc/putget.m4 index baf49e3f52..644a7dd8f1 100644 --- a/libsrc/putget.m4 +++ b/libsrc/putget.m4 @@ -9,7 +9,7 @@ dnl If you see this line, you can ignore the next one. /* Do not edit this file. It is produced from the corresponding .m4 source */ dnl /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ /* $Id: putget.m4 2783 2014-10-26 05:19:35Z wkliao $ */ diff --git a/libsrc/t_ncio.c b/libsrc/t_ncio.c index 580548961e..bfce5376f5 100644 --- a/libsrc/t_ncio.c +++ b/libsrc/t_ncio.c @@ -1,5 +1,5 @@ /* - * Copyright 1995, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See top level COPYRIGHT file for copying and redistribution conditions. */ /* $Id: t_ncio.c,v 1.10 2010/05/26 11:11:26 ed Exp $ */ diff --git a/libsrc/t_ncxx.m4 b/libsrc/t_ncxx.m4 index 81589c18f0..4aba4b6fb8 100644 --- a/libsrc/t_ncxx.m4 +++ b/libsrc/t_ncxx.m4 @@ -5,7 +5,7 @@ dnl If you see this line, you can ignore the next one. /* Do not edit this file. It is produced from the corresponding .m4 source */ dnl /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ /* "$Id: t_ncxx.m4,v 2.17 2005/05/20 14:48:14 russ Exp $" */ @@ -16,13 +16,13 @@ dnl * Unlike t_ncx.c, it only checks self consistency, * not consistency with the xdr library. * - * Link like this: + * Link like this: * cc t_ncxx.c ncx.o -o t_nxc * (The xdr library is not needed.) * * If an assertion fails, there is a problem. * Otherwise, the program is silent and has exit code 0. - */ + */ #if HAVE_CONFIG_H #include @@ -239,10 +239,10 @@ dnl T_PUTN(XType, Type) dnl define(`T_PUTN',dnl `dnl -static void +static void t_putn_$1_$2(char *const buf) { - char *xp = buf; + char *xp = buf; const $2 *tp = `$2's; size_t nelems = ArraySize(`$2's); int status = ncx_putn_$1_$2((void **)&xp, nelems, tp); @@ -273,10 +273,10 @@ dnl Doesn't make signed comparisons to unsigned type dnl define(`T_PUTN_U',dnl `dnl -static void +static void t_putn_$1_$2(char *const buf) { - char *xp = buf; + char *xp = buf; const $2 *tp = `$2's; size_t nelems = ArraySize(`$2's); int status = ncx_putn_$1_$2((void **)&xp, nelems, tp); @@ -301,10 +301,10 @@ dnl T_PAD_PUTN(XType, Type) dnl define(`T_PAD_PUTN',dnl `dnl -static void +static void t_pad_putn_$1_$2(char *const buf) { - char *xp = buf; + char *xp = buf; const $2 *tp = `$2's; size_t nelems = ArraySize(`$2's); const char *end = buf + nelems * Xsizeof($1); @@ -337,10 +337,10 @@ dnl T_GETN(XType, Type) dnl define(`T_GETN',dnl `dnl -static void +static void t_getn_$1_$2(const char *const buf) { - const char *xp = buf; + const char *xp = buf; const $2 *tp = `$2's; $2 *lp = ($2 *)lbuf; size_t nelems = ArraySize(`$2's); @@ -368,10 +368,10 @@ dnl Doesn't make signed comparisons to unsigned type dnl define(`T_GETN_U',dnl `dnl -static void +static void t_getn_$1_$2(const char *const buf) { - const char *xp = buf; + const char *xp = buf; const $2 *tp = `$2's; $2 *lp = ($2 *)lbuf; size_t nelems = ArraySize(`$2's); @@ -397,10 +397,10 @@ dnl T_PAD_GETN(XType, Type) dnl define(`T_PAD_GETN',dnl `dnl -static void +static void t_pad_getn_$1_$2(const char *const buf) { - const char *xp = buf; + const char *xp = buf; const $2 *tp = `$2's; $2 *lp = ($2 *)lbuf; size_t nelems = ArraySize(`$2's); @@ -434,10 +434,10 @@ dnl dnl dnl T_PUTN(schar, schar) dnl T_PUTN(schar, uchar) replaced by special case code. dnl - we don't return conversion errors putting uchar to schar. -static void +static void t_putn_schar_uchar(char *const buf) { - char *xp = buf; + char *xp = buf; const uchar *tp = uchars; size_t nelems = ArraySize(schars); int status = ncx_putn_schar_uchar((void **)&xp, nelems, tp); @@ -454,10 +454,10 @@ T_PUTN(schar, double) T_PAD_PUTN(schar, schar) dnl T_PAD_PUTN(schar, uchar) replaced by special case code. dnl - we don't return conversion errors putting uchar to schar. -static void +static void t_pad_putn_schar_uchar(char *const buf) { - char *xp = buf; + char *xp = buf; const uchar *tp = uchars; size_t nelems = ArraySize(uchars); const char *end = buf + nelems * X_SIZEOF_SCHAR; @@ -485,10 +485,10 @@ T_PUTN(short, double) T_PAD_PUTN(short, schar) dnl T_PAD_PUTN(short, uchar) dnl Don't make signed comparisons to usigned type -static void +static void t_pad_putn_short_uchar(char *const buf) { - char *xp = buf; + char *xp = buf; const uchar *tp = uchars; size_t nelems = ArraySize(uchars); const char *end = buf + nelems * X_SIZEOF_SHORT; @@ -545,10 +545,10 @@ T_PUTN(double, double) T_GETN(schar, schar) dnl T_GETN(schar, uchar) dnl - we don't return conversion errors gettin schar to uchar. -static void +static void t_getn_schar_uchar(const char *const buf) { - const char *xp = buf; + const char *xp = buf; const uchar *tp = uchars; uchar *lp = (uchar *)lbuf; size_t nelems = ArraySize(schars); @@ -574,10 +574,10 @@ T_GETN(schar, double) T_PAD_GETN(schar, schar) dnl T_PAD_GETN(schar, uchar) dnl - we don't return conversion errors gettin schar to uchar. -static void +static void t_pad_getn_schar_uchar(const char *const buf) { - const char *xp = buf; + const char *xp = buf; const uchar *tp = uchars; uchar *lp = (uchar *)lbuf; size_t nelems = ArraySize(schars); @@ -614,10 +614,10 @@ T_GETN(short, double) T_PAD_GETN(short, schar) dnl T_PAD_GETN(short, uchar) dnl Don't make signed comparisons to usigned type -static void +static void t_pad_getn_short_uchar(const char *const buf) { - const char *xp = buf; + const char *xp = buf; const uchar *tp = uchars; uchar *lp = (uchar *)lbuf; size_t nelems = ArraySize(uchars); @@ -659,10 +659,10 @@ T_GETN_U(float, uchar) T_GETN(float, short) dnl T_GETN(float, int) dnl Exact conversion of int to x_float is limited by external float mantissa -static void +static void t_getn_float_int(const char *const buf) { - const char *xp = buf; + const char *xp = buf; const int *tp = ints; int *lp = (int *)lbuf; size_t nelems = ArraySize(ints); @@ -687,10 +687,10 @@ t_getn_float_int(const char *const buf) dnl T_GETN(float, long) dnl Exact conversion of long to x_float is limited by external float mantissa -static void +static void t_getn_float_long(const char *const buf) { - const char *xp = buf; + const char *xp = buf; const long *tp = longs; long *lp = (long *)lbuf; size_t nelems = ArraySize(longs); @@ -719,10 +719,10 @@ t_getn_float_long(const char *const buf) T_GETN(float, float) dnl T_GETN(float, double) dnl Exact conversion of double to x_float is limited by external float mantissa -static void +static void t_getn_float_double(const char *const buf) { - const char *xp = buf; + const char *xp = buf; const double *tp = doubles; double *lp = (double *)lbuf; size_t nelems = ArraySize(doubles); @@ -754,7 +754,7 @@ t_getn_float_double(const char *const buf) (void) fprintf(stderr, "%.9e != %.9e float_double (diff %.9e)\n", tp[ii], lp[ii], tp[ii] - lp[ii]); - + } } } diff --git a/libsrc/v1hpg.c b/libsrc/v1hpg.c index ee85fe9aa4..0886bb337f 100644 --- a/libsrc/v1hpg.c +++ b/libsrc/v1hpg.c @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ diff --git a/libsrc/var.c b/libsrc/var.c index 9254894ed4..6b466821e1 100644 --- a/libsrc/var.c +++ b/libsrc/var.c @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ /* $Id: var.c,v 1.144 2010/05/30 00:50:35 russ Exp $ */ diff --git a/libsrc/winceio.c b/libsrc/winceio.c index c7a2e14ff5..f30daba420 100644 --- a/libsrc/winceio.c +++ b/libsrc/winceio.c @@ -1,5 +1,5 @@ /* - * Copyright 1996, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ /* $Id: winceio.c,v 1.2 2010/05/04 17:30:04 dmh Exp $ */ diff --git a/libsrc4/CMakeLists.txt b/libsrc4/CMakeLists.txt index f54d652c3e..59aabbb45a 100644 --- a/libsrc4/CMakeLists.txt +++ b/libsrc4/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. # Process these files with m4. SET(libsrc4_SOURCES nc4dispatch.c nc4attr.c nc4dim.c nc4grp.c nc4type.c nc4var.c ncfunc.c nc4internal.c ncindex.c ) diff --git a/libsrc4/Makefile.am b/libsrc4/Makefile.am index 0c59d6ae8e..1a3d6c842f 100644 --- a/libsrc4/Makefile.am +++ b/libsrc4/Makefile.am @@ -1,4 +1,4 @@ -# This is part of Unidata's netCDF package. Copyright 2005-2011, see +# This is part of Unidata's netCDF package. Copyright 2005-2018, see # the COPYRIGHT file for more information. # This automake file generates the Makefile to build netCDF-4. @@ -15,8 +15,3 @@ nc4internal.c nc4type.c nc4var.c ncfunc.c error4.c nc4printer.c \ ncindex.c EXTRA_DIST = CMakeLists.txt - - - - - diff --git a/libsrc4/error4.c b/libsrc4/error4.c index bdd2345a55..43ff295894 100644 --- a/libsrc4/error4.c +++ b/libsrc4/error4.c @@ -1,4 +1,6 @@ -/* Copyright 2003-2018, University Corporation for Atmospheric +/*! \file + +Copyright 2003-2018, University Corporation for Atmospheric Research. See netcdf-4/docs/COPYRIGHT file for copying and redistribution conditions. */ /** @@ -8,7 +10,7 @@ redistribution conditions. */ * * This file contains functions relating to logging errors. Also it * contains the functions nc_malloc, nc_calloc, and nc_free. - * + * * @author Ed Hartnett */ @@ -17,7 +19,9 @@ redistribution conditions. */ #include #include #include "assert.h" +#ifdef USE_HDF5 #include +#endif /* USE_HDF5 */ /* This contents of this file get skipped if LOGGING is not defined * during compile. */ @@ -28,7 +32,7 @@ extern int nc_log_level; /* This function prints out a message, if the severity of the message is lower than the global nc_log_level. To use it, do something like this: - + nc_log(0, "this computer will explode in %d seconds", i); After the first arg (the severity), use the rest like a normal @@ -36,7 +40,7 @@ extern int nc_log_level; This function is heavily based on the function in section 15.5 of the C FAQ. */ -void +void nc_log(int severity, const char *fmt, ...) { va_list argp; @@ -58,17 +62,18 @@ nc_log(int severity, const char *fmt, ...) va_start(argp, fmt); vfprintf(stderr, fmt, argp); va_end(argp); - + /* Put on a final linefeed. */ fprintf(stderr, "\n"); fflush(stderr); } -void +void nc_log_hdf5(void) { +#ifdef USE_HDF5 H5Eprint(NULL); +#endif /* USE_HDF5 */ } #endif /* ifdef LOGGING */ - diff --git a/libsrc4/nc4attr.c b/libsrc4/nc4attr.c index 3e86df54eb..651014d9c7 100644 --- a/libsrc4/nc4attr.c +++ b/libsrc4/nc4attr.c @@ -18,79 +18,9 @@ #include "nc.h" #include "nc4internal.h" -#include "hdf5internal.h" #include "nc4dispatch.h" #include "ncdispatch.h" -/** - * @internal Get special informatation about the attribute. - * - * @param h5 Pointer to HDF5 file info struct. - * @param name Name of attribute. - * @param filetypep Pointer that gets type of the attribute data in - * file. - * @param mem_type Type of attribute data in memory. - * @param lenp Pointer that gets length of attribute array. - * @param attnump Pointer that gets the attribute number. - * @param data Attribute data. - * - * @return ::NC_NOERR No error. - * @return ::NC_EBADID Bad ncid. - * @return ::NC_ERANGE Data conversion out of range. - * @author Dennis Heimbigner - */ -static int -nc4_get_att_special(NC_FILE_INFO_T* h5, const char* name, - nc_type* filetypep, nc_type mem_type, size_t* lenp, - int* attnump, void* data) -{ - /* Fail if asking for att id */ - if(attnump) - return NC_EATTMETA; - - if(strcmp(name,NCPROPS)==0) { - char* propdata = NULL; - int stat = NC_NOERR; - int len; - if(h5->provenance->propattr.version == 0) - return NC_ENOTATT; - if(mem_type == NC_NAT) mem_type = NC_CHAR; - if(mem_type != NC_CHAR) - return NC_ECHAR; - if(filetypep) *filetypep = NC_CHAR; - stat = NC4_buildpropinfo(&h5->provenance->propattr, &propdata); - if(stat != NC_NOERR) return stat; - len = strlen(propdata); - if(lenp) *lenp = len; - if(data) strncpy((char*)data,propdata,len+1); - free(propdata); - } else if(strcmp(name,ISNETCDF4ATT)==0 - || strcmp(name,SUPERBLOCKATT)==0) { - unsigned long long iv = 0; - if(filetypep) *filetypep = NC_INT; - if(lenp) *lenp = 1; - if(strcmp(name,SUPERBLOCKATT)==0) - iv = (unsigned long long)h5->provenance->superblockversion; - else /* strcmp(name,ISNETCDF4ATT)==0 */ - iv = NC4_isnetcdf4(h5); - if(mem_type == NC_NAT) mem_type = NC_INT; - if(data) - switch (mem_type) { - case NC_BYTE: *((char*)data) = (char)iv; break; - case NC_SHORT: *((short*)data) = (short)iv; break; - case NC_INT: *((int*)data) = (int)iv; break; - case NC_UBYTE: *((unsigned char*)data) = (unsigned char)iv; break; - case NC_USHORT: *((unsigned short*)data) = (unsigned short)iv; break; - case NC_UINT: *((unsigned int*)data) = (unsigned int)iv; break; - case NC_INT64: *((long long*)data) = (long long)iv; break; - case NC_UINT64: *((unsigned long long*)data) = (unsigned long long)iv; break; - default: - return NC_ERANGE; - } - } - return NC_NOERR; -} - /** * @internal Get or put attribute metadata from our linked list of * file info. Always locate the attribute by name, never by attnum. @@ -98,7 +28,7 @@ nc4_get_att_special(NC_FILE_INFO_T* h5, const char* name, * * @param ncid File and group ID. * @param varid Variable ID. - * @param name Name of attribute. + * @param name Name of attribute. Must already be normalized. * @param xtype Pointer that gets (file) type of attribute. Ignored if * NULL. * @param mem_type The type of attribute data in memory. @@ -123,7 +53,6 @@ nc4_get_att_ptrs(NC_FILE_INFO_T *h5, NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var, int range_error = NC_NOERR; void *bufr = NULL; size_t type_size; - char norm_name[NC_MAX_NAME + 1]; int varid; int i; int retval; @@ -139,20 +68,8 @@ nc4_get_att_ptrs(NC_FILE_INFO_T *h5, NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var, if (name == NULL) BAIL(NC_EBADNAME); - /* Normalize name. */ - if ((retval = nc4_normalize_name(name, norm_name))) - BAIL(retval); - - /* If this is one of the reserved atts, use nc_get_att_special. */ - if (!var) - { - const NC_reservedatt* ra = NC_findreserved(norm_name); - if(ra != NULL && (ra->flags & NAMEONLYFLAG)) - return nc4_get_att_special(h5, norm_name, xtype, mem_type, lenp, attnum, data); - } - /* Find the attribute, if it exists. */ - if ((retval = nc4_find_grp_att(grp, varid, norm_name, my_attnum, &att))) + if ((retval = nc4_find_grp_att(grp, varid, name, my_attnum, &att))) return retval; /* If mem_type is NC_NAT, it means we want to use the attribute's @@ -299,6 +216,7 @@ nc4_get_att(int ncid, int varid, const char *name, nc_type *xtype, NC_FILE_INFO_T *h5; NC_GRP_INFO_T *grp; NC_VAR_INFO_T *var = NULL; + char norm_name[NC_MAX_NAME + 1]; int retval; LOG((3, "%s: ncid 0x%x varid %d mem_type %d", __func__, ncid, @@ -321,7 +239,11 @@ nc4_get_att(int ncid, int varid, const char *name, nc_type *xtype, if (!name) return NC_EBADNAME; - return nc4_get_att_ptrs(h5, grp, var, name, xtype, mem_type, lenp, + /* Normalize name. */ + if ((retval = nc4_normalize_name(name, norm_name))) + return retval; + + return nc4_get_att_ptrs(h5, grp, var, norm_name, xtype, mem_type, lenp, attnum, data); } diff --git a/libsrc4/nc4dispatch.c b/libsrc4/nc4dispatch.c index 110b0144ac..95cb1f8867 100644 --- a/libsrc4/nc4dispatch.c +++ b/libsrc4/nc4dispatch.c @@ -78,6 +78,5 @@ NC4_initialize(void) int NC4_finalize(void) { - nc4_hdf5_finalize(); return NC_NOERR; } diff --git a/libsrc4/nc4internal.c b/libsrc4/nc4internal.c index 567af43853..bb510da6b9 100644 --- a/libsrc4/nc4internal.c +++ b/libsrc4/nc4internal.c @@ -21,11 +21,10 @@ #include "ncdispatch.h" /* from libdispatch */ #include "ncutf8.h" -/* These are the default chunk cache sizes for HDF5 files created or - * opened with netCDF-4. */ -extern size_t nc4_chunk_cache_size; -extern size_t nc4_chunk_cache_nelems; -extern float nc4_chunk_cache_preemption; +/* These hold the file caching settings for the library. */ +size_t nc4_chunk_cache_size = CHUNK_CACHE_SIZE; /**< Default chunk cache size. */ +size_t nc4_chunk_cache_nelems = CHUNK_CACHE_NELEMS; /**< Default chunk cache number of elements. */ +float nc4_chunk_cache_preemption = CHUNK_CACHE_PREEMPTION; /**< Default chunk cache preemption. */ #ifdef LOGGING /* This is the severity level of messages which will be logged. Use @@ -1413,10 +1412,7 @@ int nc_set_log_level(int new_level) { #ifdef LOGGING - if(!nc4_hdf5_initialized) - nc4_hdf5_initialize(); - - /* Now remember the new level. */ + /* Remember the new level. */ nc_log_level = new_level; LOG((4, "log_level changed to %d", nc_log_level)); #endif /*LOGGING */ diff --git a/libsrc4/nc4printer.c b/libsrc4/nc4printer.c index 0596b0f0b9..641eff92bc 100644 --- a/libsrc4/nc4printer.c +++ b/libsrc4/nc4printer.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ @@ -17,7 +17,7 @@ create other tools. #include "ncbytes.h" #include "nclist.h" -#undef DEBUG +#undef DEBUG #define BUFSIZE 4096 @@ -148,7 +148,7 @@ freeNC4Printer(NC4printer* out) { int i; - if(out == NULL) return; + if(out == NULL) return; #ifdef DEBUG fprintf(stderr,"free: |allnodes=%ld\n",nclistlength(out->allnodes)); @@ -206,7 +206,7 @@ printNode(NC4printer* out, NCID* node, int depth) switch (node->sort) { case GROUP: - /* Get group name */ + /* Get group name */ if((ret=nc_inq_grpname(node->id,name))) FAIL; SETNAME(node,name); /* get group counts */ @@ -304,7 +304,7 @@ printNode(NC4printer* out, NCID* node, int depth) printXMLAttributeName(out, "name", node->name); printXMLAttributeSize(out, "size", node->size); CAT("/>"); - break; + break; case NC_ENUM: if((ret=nc_inq_enum(GROUPOF(node),node->id,NULL,NULL,NULL,&count))) FAIL; INDENT(depth); CAT("base = findType(out,base); id->size = count; - printAttribute(out,id,depth); + printAttribute(out,id,depth); CAT("\n"); } depth--; @@ -636,7 +636,7 @@ makeFQN(NCID* id, NCbytes* path) fqnWalk(g,path); ncbytesappend(path,'/'); if(id->sort != GROUP) - ncbytescat(path,id->name); + ncbytescat(path,id->name); ncbytesnull(path); } @@ -646,7 +646,7 @@ fqnWalk(NCID* grp, NCbytes* path) if(grp->id != 0) { NCID* parent = grp->parent; fqnWalk(parent,path); - ncbytesappend(path,'/'); + ncbytesappend(path,'/'); ncbytescat(path,parent->name); } } @@ -738,7 +738,7 @@ printString(NCbytes* out, const char* s, int quotes) if(c == '\\') ncbytescat(out,"\\\\"); else if(c == '"') ncbytescat(out,"\\\""); else ncbytesappend(out,c); - } + } if(quotes) ncbytesappend(out,'"'); ncbytesnull(out); } @@ -783,4 +783,3 @@ readAttributeValues(NCID* attr, void** valuesp) if(valuesp) *valuesp = values; return ret; } - diff --git a/libsrc4/nc4var.c b/libsrc4/nc4var.c index 6d242c4443..7a6f4cbfb6 100644 --- a/libsrc4/nc4var.c +++ b/libsrc4/nc4var.c @@ -1,4 +1,4 @@ -/* Copyright 2003-2006, University Corporation for Atmospheric +/* Copyright 2003-2018, University Corporation for Atmospheric * Research. See COPYRIGHT file for copying and redistribution * conditions.*/ /** @@ -16,94 +16,6 @@ #include "hdf5internal.h" #include -/** - * @internal Set chunk cache size for a variable. This is the internal - * function called by nc_set_var_chunk_cache(). - * - * @param ncid File ID. - * @param varid Variable ID. - * @param size Size in bytes to set cache. - * @param nelems Number of elements in cache. - * @param preemption Controls cache swapping. - * - * @returns ::NC_NOERR No error. - * @returns ::NC_EBADID Bad ncid. - * @returns ::NC_ENOTVAR Invalid variable ID. - * @returns ::NC_ESTRICTNC3 Attempting netcdf-4 operation on strict nc3 netcdf-4 file. - * @returns ::NC_EINVAL Invalid input. - * @returns ::NC_EHDFERR HDF5 error. - * @author Ed Hartnett - */ -int -NC4_set_var_chunk_cache(int ncid, int varid, size_t size, size_t nelems, - float preemption) -{ - NC *nc; - NC_GRP_INFO_T *grp; - NC_FILE_INFO_T *h5; - NC_VAR_INFO_T *var; - int retval; - - /* Check input for validity. */ - if (preemption < 0 || preemption > 1) - return NC_EINVAL; - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - assert(nc && grp && h5); - - /* Find the var. */ - var = (NC_VAR_INFO_T*)ncindexith(grp->vars,varid); - if(!var) - return NC_ENOTVAR; - assert(var && var->hdr.id == varid); - - /* Set the values. */ - var->chunk_cache_size = size; - var->chunk_cache_nelems = nelems; - var->chunk_cache_preemption = preemption; - - if ((retval = nc4_reopen_dataset(grp, var))) - return retval; - - return NC_NOERR; -} - -/** - * @internal A wrapper for NC4_set_var_chunk_cache(), we need this - * version for fortran. Negative values leave settings as they are. - * - * @param ncid File ID. - * @param varid Variable ID. - * @param size Size in bytes to set cache. - * @param nelems Number of elements in cache. - * @param preemption Controls cache swapping. - * - * @returns ::NC_NOERR for success - * @author Ed Hartnett - */ -int -nc_set_var_chunk_cache_ints(int ncid, int varid, int size, int nelems, - int preemption) -{ - size_t real_size = H5D_CHUNK_CACHE_NBYTES_DEFAULT; - size_t real_nelems = H5D_CHUNK_CACHE_NSLOTS_DEFAULT; - float real_preemption = CHUNK_CACHE_PREEMPTION; - - if (size >= 0) - real_size = ((size_t) size) * MEGABYTE; - - if (nelems >= 0) - real_nelems = nelems; - - if (preemption >= 0) - real_preemption = preemption / 100.; - - return NC4_set_var_chunk_cache(ncid, varid, real_size, real_nelems, - real_preemption); -} - /** * @internal This is called by nc_get_var_chunk_cache(). Get chunk * cache size for a variable. @@ -1395,3 +1307,69 @@ nc4_get_default_fill_value(const NC_TYPE_INFO_T *type_info, void *fill_value) return NC_NOERR; } + +/** + * @internal Get the length, in bytes, of one element of a type in + * memory. + * + * @param h5 Pointer to HDF5 file info struct. + * @param xtype NetCDF type ID. + * @param len Pointer that gets length in bytes. + * + * @returns NC_NOERR No error. + * @returns NC_EBADTYPE Type not found. + * @author Ed Hartnett + */ +int +nc4_get_typelen_mem(NC_FILE_INFO_T *h5, nc_type xtype, size_t *len) +{ + NC_TYPE_INFO_T *type; + int retval; + + LOG((4, "%s xtype: %d", __func__, xtype)); + assert(len); + + /* If this is an atomic type, the answer is easy. */ + switch (xtype) + { + case NC_BYTE: + case NC_CHAR: + case NC_UBYTE: + *len = sizeof(char); + return NC_NOERR; + case NC_SHORT: + case NC_USHORT: + *len = sizeof(short); + return NC_NOERR; + case NC_INT: + case NC_UINT: + *len = sizeof(int); + return NC_NOERR; + case NC_FLOAT: + *len = sizeof(float); + return NC_NOERR; + case NC_DOUBLE: + *len = sizeof(double); + return NC_NOERR; + case NC_INT64: + case NC_UINT64: + *len = sizeof(long long); + return NC_NOERR; + case NC_STRING: + *len = sizeof(char *); + return NC_NOERR; + } + + /* See if var is compound type. */ + if ((retval = nc4_find_type(h5, xtype, &type))) + return retval; + + if (!type) + return NC_EBADTYPE; + + *len = type->size; + + LOG((5, "type->size: %d", type->size)); + + return NC_NOERR; +} diff --git a/libsrc4/ncfunc.c b/libsrc4/ncfunc.c index 8cd0d58c04..714867d9ce 100644 --- a/libsrc4/ncfunc.c +++ b/libsrc4/ncfunc.c @@ -1,7 +1,7 @@ /** * @internal * - * Copyright 2003, University Corporation for Atmospheric + * Copyright 2018, University Corporation for Atmospheric * Research. See netcdf-4/docs/COPYRIGHT file for copying and * redistribution conditions. * @@ -82,7 +82,7 @@ NC4_inq_format_extended(int ncid, int *formatp, int *modep) if(modep) *modep = nc->mode|NC_NETCDF4; - if (formatp) + if (formatp) *formatp = NC_FORMATX_NC_HDF5; return NC_NOERR; diff --git a/libsrc4/ncindex.c b/libsrc4/ncindex.c index 54f27be424..e76b005f4a 100644 --- a/libsrc4/ncindex.c +++ b/libsrc4/ncindex.c @@ -1,5 +1,5 @@ /* -Copyright (c) 1998-2017 University Corporation for Atmospheric Research/Unidata +Copyright (c) 1998-2018 University Corporation for Atmospheric Research/Unidata See LICENSE.txt for license information. */ @@ -176,7 +176,7 @@ also recompute their hashkey. /* Return 1 if ok, 0 otherwise.*/ int ncindexrebuild(NCindex* index) -{ +{ #ifndef NCNOHASH size_t i; size_t size = nclistlength(index->list); @@ -196,7 +196,7 @@ ncindexrebuild(NCindex* index) } #endif if(contents != NULL) free(contents); - return 1; + return 1; } /* Free a list map */ @@ -206,7 +206,7 @@ ncindexfree(NCindex* index) if(index == NULL) return 1; nclistfree(index->list); NC_hashmapfree(index->map); - free(index); + free(index); return 1; } @@ -235,7 +235,7 @@ keystr(NC_hentry* e) { if(e->keysize < sizeof(uintptr_t)) return (const char*)(&e->key); - else + else return (const char*)(e->key); } #endif @@ -253,7 +253,7 @@ ncindexverify(NCindex* lm, int dump) if(lm == NULL) { fprintf(stderr,"index: \n"); return 1; - } + } if(dump) { fprintf(stderr,"-------------------------\n"); #ifndef NCNOHASH diff --git a/libsrcp/CMakeLists.txt b/libsrcp/CMakeLists.txt index 7d8ab9cf37..adf1d34136 100644 --- a/libsrcp/CMakeLists.txt +++ b/libsrcp/CMakeLists.txt @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + SET(libsrcp_SOURCES ncpdispatch.c) add_library(netcdfp OBJECT ${libsrcp_SOURCES}) diff --git a/libsrcp/Makefile.am b/libsrcp/Makefile.am index 0747f35e9c..58f3d8e10d 100644 --- a/libsrcp/Makefile.am +++ b/libsrcp/Makefile.am @@ -1,5 +1,5 @@ ## This is an automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. +# Copyright 2018, see the COPYRIGHT file for more information. # This automake file is in charge of building the libsrc directory, # which contains the classic library code. @@ -16,4 +16,4 @@ libnetcdfp_la_SOURCES = ncpdispatch.c noinst_LTLIBRARIES = libnetcdfp.la -EXTRA_DIST = CMakeLists.txt +EXTRA_DIST = CMakeLists.txt diff --git a/libsrcp/ncpdispatch.c b/libsrcp/ncpdispatch.c index 0eb490e609..765a628a5f 100644 --- a/libsrcp/ncpdispatch.c +++ b/libsrcp/ncpdispatch.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/nc_test/CMakeLists.txt b/nc_test/CMakeLists.txt index 0e5c94d1c4..4f75ed6030 100644 --- a/nc_test/CMakeLists.txt +++ b/nc_test/CMakeLists.txt @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + message(STATUS "CMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR}") message(STATUS "CMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}") message(STATUS "CMAKE_CURRENT_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/nc_test/Makefile.am b/nc_test/Makefile.am index 23e16db048..0050b64432 100644 --- a/nc_test/Makefile.am +++ b/nc_test/Makefile.am @@ -1,5 +1,5 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. +# Copyright 2018, see the COPYRIGHT file for more information. # This file builds and runs the nc_test program, which tests the # netCDF-3 API for all formats. @@ -51,7 +51,7 @@ TESTPROGRAMS += testnc3perf testnc3perf_SOURCES = testnc3perf.c endif -if USE_NETCDF4 +if USE_HDF5 TESTPROGRAMS += tst_diskless6 tst_diskless6_SOURCES = tst_diskless6.c endif @@ -62,7 +62,7 @@ check_PROGRAMS = $(TESTPROGRAMS) # Build Diskless test helpers check_PROGRAMS += tst_diskless tst_diskless3 tst_diskless4 \ tst_diskless5 tst_inmemory tst_open_mem -if USE_NETCDF4 +if USE_HDF5 check_PROGRAMS += tst_diskless2 endif diff --git a/nc_test/error.c b/nc_test/error.c index 2d502ca0e5..3111a31f85 100644 --- a/nc_test/error.c +++ b/nc_test/error.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1996, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id: error.c,v 1.7 2007/05/15 01:36:57 ed Exp $ *********************************************************************/ diff --git a/nc_test/error.h b/nc_test/error.h index f8ccf3b062..6e6a10edc8 100644 --- a/nc_test/error.h +++ b/nc_test/error.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header $ *********************************************************************/ diff --git a/nc_test/large_files.c b/nc_test/large_files.c index a723c81c1b..114fa3d2fd 100644 --- a/nc_test/large_files.c +++ b/nc_test/large_files.c @@ -1,5 +1,5 @@ /* - Copyright 2004-2006, UCAR/Unidata + Copyright 2004-2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This is part of netCDF. diff --git a/nc_test/nc_test.c b/nc_test/nc_test.c index 9e5490e82f..74ac76e04c 100644 --- a/nc_test/nc_test.c +++ b/nc_test/nc_test.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1996-2005, UCAR/Unidata + * Copyright 1996-2018, UCAR/Unidata * See COPYRIGHT file for copying and redistribution conditions. * $Id: nc_test.c 2796 2014-10-28 03:40:29Z wkliao $ *********************************************************************/ @@ -153,7 +153,7 @@ main(int argc, char *argv[]) case NC_FORMAT_NETCDF4_CLASSIC: -#ifdef USE_NETCDF4 +#ifdef USE_HDF5 nc_set_default_format(NC_FORMAT_NETCDF4_CLASSIC, NULL); strcpy(testfile, "nc_test_netcdf4.nc"); fprintf(stderr, "\n\nSwitching to netCDF-4 format (with NC_CLASSIC_MODEL).\n"); diff --git a/nc_test/quick_large_files.c b/nc_test/quick_large_files.c index 913916c042..04d7eac240 100644 --- a/nc_test/quick_large_files.c +++ b/nc_test/quick_large_files.c @@ -1,5 +1,5 @@ /* - Copyright 2004-2006, UCAR/Unidata + Copyright 2004-2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This program (quickly, but not thoroughly) tests the large file diff --git a/nc_test/run_diskless.sh b/nc_test/run_diskless.sh index f7e87fdc35..30d27fa5df 100755 --- a/nc_test/run_diskless.sh +++ b/nc_test/run_diskless.sh @@ -17,18 +17,18 @@ FILE3=tst_diskless3.nc echo "" echo "*** Testing in-memory (diskless) files with and without persistence" -HASNC4=`${top_builddir}/nc-config --has-nc4` +HASHDF5=`${top_builddir}/nc-config --has-hdf5` echo "**** Test diskless netCDF classic file without persistence" ${execdir}/tst_diskless echo "PASS: diskless netCDF classic file without persistence" -if test "x$HASNC4" = "xyes" ; then +if test "x$HASHDF5" = "xyes" ; then echo "" echo "**** Test diskless netCDF enhanced file without persistence" ${execdir}/tst_diskless netcdf4 echo "PASS: diskless netCDF enhanced file without persistence" -fi #HASNC4 +fi #HASHDF5 echo "" echo "**** Test diskless netCDF classic file with persistence" @@ -43,7 +43,7 @@ echo "#### $FILE1 not created" echo "FAIL: diskless netCDF classic file with persistence" fi -if test "x$HASNC4" = "xyes" ; then +if test "x$HASHDF5" = "xyes" ; then echo "" echo "**** Test diskless netCDF enhanced file with persistence" rm -f $FILE1 @@ -57,10 +57,10 @@ echo "$FILE1 not created" echo "FAIL: diskless netCDF enhanced file with persistence" fi -fi #HASNC4 +fi #HASHDF5 # Do extended netcdf enhanced test -if test "x$HASNC4" = "xyes" ; then +if test "x$HASHDF5" = "xyes" ; then ok="" echo "" @@ -90,7 +90,7 @@ else echo "FAIL: extended enhanced diskless netCDF with persistence" fi -fi #HASNC4 +fi #HASHDF5 echo "" echo "**** Testing nc_open in-memory (diskless) files" diff --git a/nc_test/run_inmemory.sh b/nc_test/run_inmemory.sh index b4515c5d1b..c02f99d84a 100755 --- a/nc_test/run_inmemory.sh +++ b/nc_test/run_inmemory.sh @@ -16,28 +16,30 @@ CREATE3=tst_inmemory3_create FILE4=tst_inmemory4 CREATE4=tst_inmemory4_create -# For tst_open_mem +# For tst_open_mem NETCDF4 only OMEMFILE=f03tst_open_mem.nc echo "" echo "*** Testing in-memory operations" -HASNC4=`${top_builddir}/nc-config --has-nc4` +HASHDF5=`${top_builddir}/nc-config --has-hdf5` # Execute the core of the inmemory tests ${execdir}/tst_inmemory -exit +if test "x$HASNC4" = xyes ; then ${execdir}/tst_open_mem ${srcdir}/${OMEMFILE} +fi echo "**** Test ncdump of the resulting inmemory data" ${NCDUMP} -n "${FILE3}" ${FILE3}.nc > ${FILE3}.cdl ${NCDUMP} -n "${FILE3}" ${CREATE3}.nc > ${CREATE3}.cdl diff -wb ${FILE3}.cdl ${CREATE3}.cdl -if test "x$HASNC4" = "xyes" ; then +if test "x$HASHDF5" = "xyes" ; then ${NCDUMP} ${FILE4}.nc > ${FILE4}.cdl -${NCDUMP} ${CREATE4}.nc > ${CREATE4}.cdl +${NCDUMP} -n ${FILE4} ${CREATE4}.nc > ${CREATE4}.cdl diff -wb ${FILE4}.cdl ${CREATE4}.cdl +fi # cleanup rm -f ${FILE3}.nc ${FILE4}.nc ${CREATE3}.nc ${CREATE4}.nc diff --git a/nc_test/t_nc.c b/nc_test/t_nc.c index 2b6a78f9e9..7fdc285208 100644 --- a/nc_test/t_nc.c +++ b/nc_test/t_nc.c @@ -1,4 +1,4 @@ -/* Copyright 1988-2010 University Corporation for Atmospheric Research +/* Copyright 1988-2018 University Corporation for Atmospheric Research See netcdf/COPYRIGHT file for copying and redistribution conditions. diff --git a/nc_test/t_nc_p5.c b/nc_test/t_nc_p5.c index 728783f0b0..82ce46e72e 100644 --- a/nc_test/t_nc_p5.c +++ b/nc_test/t_nc_p5.c @@ -1,14 +1,14 @@ -/* Copyright 1988-2010 University Corporation for Atmospheric Research +/* Copyright 1988-2018 University Corporation for Atmospheric Research See netcdf/COPYRIGHT file for copying and redistribution conditions. Program to create a cdf, exercise all cdf functions. Creates cdf, stuff it full of numbers, closes it. Then reopens it, and checks for consistency. Leaves the file around afterwards. - + Based on a program to test the nasa look-alike program, so not the most appropriate test. See ../nctest for a complete spec test. - + $Id: t_nc.c 2792 2014-10-27 06:02:59Z wkliao $ */ #define REDEF @@ -199,32 +199,32 @@ createtestvars(int id, const struct tcdfvar *testvars, size_t count) { assert(nc_def_var(id, vp->mnem, vp->type, vp->ndims, vp->dims, &varid) - == NC_NOERR ); + == NC_NOERR ); assert( nc_put_att_text(id,ii,reqattr[0],strlen(vp->units), vp->units) - == NC_NOERR); + == NC_NOERR); assert( nc_put_att_double(id,ii,reqattr[1],NC_DOUBLE,1, &vp->validmin) - == NC_NOERR); + == NC_NOERR); assert( nc_put_att_double(id,ii,reqattr[2],NC_DOUBLE,1, &vp->validmax) - == NC_NOERR); + == NC_NOERR); assert( nc_put_att_double(id,ii,reqattr[3],NC_DOUBLE,1, &vp->scalemin) - == NC_NOERR); + == NC_NOERR); assert( nc_put_att_double(id,ii,reqattr[4],NC_DOUBLE,1, &vp->scalemax) - == NC_NOERR); + == NC_NOERR); assert( nc_put_att_text(id,ii,reqattr[5],strlen(vp->fieldnam), vp->fieldnam) - == NC_NOERR); + == NC_NOERR); } } @@ -256,7 +256,7 @@ fill_seq(int id) { size_t *cc = vindices; while (cc < &vindices[num_dims]) - *cc++ = 0; + *cc++ = 0; } sizes[0] = NUM_RECS; @@ -277,7 +277,7 @@ check_fill_seq(int id) sizes[0] = NUM_RECS; cc = vindices; while (cc < &vindices[num_dims]) - *cc++ = 0; + *cc++ = 0; /* ripple counter */ cc = vindices; @@ -288,7 +288,7 @@ check_fill_seq(int id) { if (mm == &sizes[num_dims - 1]) { - if(nc_get_var1_float(id, Float_id, vindices, &got.fl[0]) == -1) + if(nc_get_var1_float(id, Float_id, vindices, &got.fl[0]) == -1) goto bad_ret; /* val = (float) ii; */ /* if(val != got.fl[0]) */ @@ -366,7 +366,7 @@ main(int argc, char *argv[]) fprintf(stderr,"Error %s in file %s at line %d\n",nc_strerror(ret),__FILE__,__LINE__); exit(ret); } - + assert( nc_put_att_text(id, NC_GLOBAL, "TITLE", 12, "another name") == NC_NOERR); assert( nc_get_att_text(id, NC_GLOBAL, @@ -383,7 +383,7 @@ main(int argc, char *argv[]) createtestdims(id, NUM_DIMS, sizes, dim_names); testdims(id, NUM_DIMS, sizes, dim_names); - createtestvars(id, testvars, NUM_TESTVARS); + createtestvars(id, testvars, NUM_TESTVARS); { int ifill = -1; double dfill = -9999; @@ -395,7 +395,7 @@ main(int argc, char *argv[]) #ifdef REDEF assert( nc__enddef(id, 0, align, 0, 2*align) == NC_NOERR ); - assert( nc_put_var1_int(id, Long_id, indices[3], &birthday) + assert( nc_put_var1_int(id, Long_id, indices[3], &birthday) == NC_NOERR ); fill_seq(id); assert( nc_redef(id) == NC_NOERR ); @@ -473,7 +473,7 @@ main(int argc, char *argv[]) /* (void) printf("reopen id = %d for filename %s\n", */ /* id, fname); */ - /* NC */ + /* NC */ /* (void) printf("NC "); */ assert( nc_inq(id, &(cdesc->num_dims), &(cdesc->num_vars), &(cdesc->num_attrs), &(cdesc->xtendim) ) == NC_NOERR); @@ -481,7 +481,7 @@ main(int argc, char *argv[]) assert(cdesc->num_attrs == 1); assert(cdesc->num_vars == NUM_TESTVARS); /* (void) printf("done\n"); */ - + /* GATTR */ /* (void) printf("GATTR "); */ @@ -498,7 +498,7 @@ main(int argc, char *argv[]) /* (void) printf("VAR "); */ assert( cdesc->num_vars == NUM_TESTVARS ); - for(ii = 0; ii < cdesc->num_vars; ii++, tvp++ ) + for(ii = 0; ii < cdesc->num_vars; ii++, tvp++ ) { int jj; assert( nc_inq_var(id, ii, @@ -532,7 +532,7 @@ main(int argc, char *argv[]) /* VATTR */ /* (void) printf("VATTR\n"); */ - for(jj=0; jjnum_attrs; jj++ ) + for(jj=0; jjnum_attrs; jj++ ) { assert( nc_inq_attname(id, ii, jj, adesc->mnem) == NC_NOERR); if( strcmp(adesc->mnem, reqattr[jj]) != 0 ) @@ -547,7 +547,7 @@ main(int argc, char *argv[]) != -1) { assert( adesc->type == NC_CHAR ); assert( adesc->len == strlen(tvp->units) ); - assert( nc_get_att_text(id,ii,reqattr[0],buf)== NC_NOERR); + assert( nc_get_att_text(id,ii,reqattr[0],buf)== NC_NOERR); buf[adesc->len] = 0; assert( strcmp(tvp->units, buf) == 0); } @@ -596,7 +596,7 @@ main(int argc, char *argv[]) { assert( adesc->type == NC_CHAR ); assert( adesc->len == strlen(tvp->fieldnam) ); - assert( nc_get_att_text(id,ii,reqattr[5],buf)== NC_NOERR); + assert( nc_get_att_text(id,ii,reqattr[5],buf)== NC_NOERR); buf[adesc->len] = 0; assert( strcmp(tvp->fieldnam, buf) == 0); } diff --git a/nc_test/testnc3perf.c b/nc_test/testnc3perf.c index 549f6203fa..5a51a50626 100644 --- a/nc_test/testnc3perf.c +++ b/nc_test/testnc3perf.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1989, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/README file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/nctime.c,v 1.12 1996/04/30 17:56:58 davis Exp $ *********************************************************************/ @@ -66,7 +66,7 @@ static int DEFAULTDIMS[NDIMS] = {10, 20, 30, 40}; /* * Fill typed array element with specified value, that is - * + * * v[ii] = val; */ static void @@ -111,7 +111,7 @@ val_stuff(type, v, ii, val) /* v[ii] = val */ * * (v[ii] != val) * - * returns 0 if equal, 1 if not equal + * returns 0 if equal, 1 if not equal */ static int @@ -170,7 +170,7 @@ val_diff(type, v, ii, val) /* v[ii] != val */ clock_t TMus, TMsy; /* user and system time in clock ticks */ \ float TMelapsed; /* elapsed time in seconds */ \ struct tms TMru; - + #define TIMING_START \ TMrepeats = 1; \ do { /* loop enough times for at least 0.1 second elapsed time */ \ @@ -179,7 +179,7 @@ val_diff(type, v, ii, val) /* v[ii] != val */ TMus = TMru.tms_utime; \ TMsy = TMru.tms_stime; \ for(TMreps=0;TMreps < TMrepeats;TMreps++) { - + #define TIMING_END \ } \ times(&TMru); \ @@ -231,7 +231,7 @@ test_slabs(ncid, sizes) dims[idim].size = sizes[idim]; dims[idim].name = dnames[idim]; } - + /* back in define mode OK, now add dimensions */ dimids[0] = ncdimdef(ncid, dims[0].name, NC_UNLIMITED); @@ -263,7 +263,7 @@ test_slabs(ncid, sizes) if (ncendef (ncid) == -1) { ncclose(ncid); return; } - + printf("Note: first ncvarput writes fill values for all variables.\n"); for (iv = 0; iv < NVARS; iv++) { /* test each type of variable */ @@ -291,7 +291,7 @@ test_slabs(ncid, sizes) } } } - + for (idim = 0; idim < NDIMS; idim++) { corner[idim] = 0; edge[idim] = dims[idim].size; @@ -319,19 +319,19 @@ test_slabs(ncid, sizes) edge[idim] = 1; point[idim] = corner[idim]; } - + sprintf(time_mess,"ncvarget %ldx%ldx%ldx%ld" ,edge[0],edge[1],edge[2],edge[3]); - + TIMING_START ; if (ncvarget(ncid, varid[iv], corner, edge, (void *) v) == -1) return; TIMING_END ; - + /* if (v[0] != VF(point)) */ if (val_diff(va[iv].type, v, 0, VF(point))) fprintf(stderr,"ncvarget got wrong value for point"); - + /* get a vector in each direction */ for (idim=0; idim < NDIMS; idim++) { for (jdim=0; jdim < NDIMS; jdim++) { @@ -370,7 +370,7 @@ test_slabs(ncid, sizes) corner[jdim] = 0; edge[idim] = dims[idim].size; edge[jdim] = dims[jdim].size; - + sprintf(time_mess,"ncvarget %ldx%ldx%ldx%ld" ,edge[0],edge[1],edge[2],edge[3]); @@ -393,7 +393,7 @@ test_slabs(ncid, sizes) } } } - + /* get a cube in each direction */ for (idim=0; idim < NDIMS; idim++) { for (jdim=idim+1; jdim < NDIMS; jdim++) { @@ -409,7 +409,7 @@ test_slabs(ncid, sizes) edge[idim] = dims[idim].size; edge[jdim] = dims[jdim].size; edge[kdim] = dims[kdim].size; - + sprintf(time_mess,"ncvarget %ldx%ldx%ldx%ld" ,edge[0],edge[1],edge[2],edge[3]); @@ -439,13 +439,13 @@ test_slabs(ncid, sizes) } } } - + /* get one 4-D slab of data */ for(idim = 0; idim < NDIMS; idim++) { corner[idim] = 0; edge[idim] = dims[idim].size; } - + sprintf(time_mess,"ncvarget %ldx%ldx%ldx%ld" ,edge[0],edge[1],edge[2],edge[3]); diff --git a/nc_test/tests.h b/nc_test/tests.h index 2e24295a5e..0eba3b8e4c 100644 --- a/nc_test/tests.h +++ b/nc_test/tests.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1996, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id: tests.h 2785 2014-10-26 05:21:20Z wkliao $ *********************************************************************/ diff --git a/nc_test/tst_addvar.c b/nc_test/tst_addvar.c index f05a8af876..d57bb0ba6c 100644 --- a/nc_test/tst_addvar.c +++ b/nc_test/tst_addvar.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + /* This program adds two new variables to an existing netCDF file. * It is used to test if netCDF can correctly calculate the file offsets * for the two new variables, in particular for files that align the diff --git a/nc_test/tst_atts3.c b/nc_test/tst_atts3.c index fcdcc691ae..bcad82c07b 100644 --- a/nc_test/tst_atts3.c +++ b/nc_test/tst_atts3.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005-2007 University +/* This is part of the netCDF package. Copyright 2005-2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. diff --git a/nc_test/tst_big_rvar.c b/nc_test/tst_big_rvar.c index 8a595474c5..28c27097b8 100644 --- a/nc_test/tst_big_rvar.c +++ b/nc_test/tst_big_rvar.c @@ -1,5 +1,5 @@ /* - Copyright 2008, UCAR/Unidata + Copyright 2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This program tests a large file bug on 32-bit platforms in versions diff --git a/nc_test/tst_big_var.c b/nc_test/tst_big_var.c index f66080c1b4..b3b5bd9945 100644 --- a/nc_test/tst_big_var.c +++ b/nc_test/tst_big_var.c @@ -1,5 +1,5 @@ /* - Copyright 2008, UCAR/Unidata + Copyright 2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This program tests the large file bug in netCDF 3.6.2, diff --git a/nc_test/tst_big_var2.c b/nc_test/tst_big_var2.c index 4f722ca745..362efa5574 100644 --- a/nc_test/tst_big_var2.c +++ b/nc_test/tst_big_var2.c @@ -1,5 +1,5 @@ /* - Copyright 2008, UCAR/Unidata + Copyright 2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This program tests the fix for a large file bug in versions previous diff --git a/nc_test/tst_big_var6.c b/nc_test/tst_big_var6.c index 5f4fad7e05..04f6e9d7a7 100644 --- a/nc_test/tst_big_var6.c +++ b/nc_test/tst_big_var6.c @@ -1,5 +1,5 @@ /* - Copyright 2008, UCAR/Unidata + Copyright 2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This program tests the fix for a large file bug in versions previous diff --git a/nc_test/tst_cdf5_begin.c b/nc_test/tst_cdf5_begin.c index d704d9aa0a..e468f60462 100644 --- a/nc_test/tst_cdf5_begin.c +++ b/nc_test/tst_cdf5_begin.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include #include #include @@ -18,7 +29,7 @@ int main(int argc, char *argv[]) int i, err, nerrs=0, ncid, dimid[2], varid[2]; short buf[10]; size_t start, count; - + err = nc_create(FILE_NAME, NC_CLOBBER|NC_64BIT_DATA, &ncid); ERR; err = nc_def_dim(ncid, "dim0", NC_MAX_UINT, &dimid[0]); ERR err = nc_def_dim(ncid, "dim1", 10, &dimid[1]); ERR @@ -53,4 +64,3 @@ int main(int argc, char *argv[]) return (nerrs > 0); } - diff --git a/nc_test/tst_cdf5format.c b/nc_test/tst_cdf5format.c index 4889357249..e5a2008659 100644 --- a/nc_test/tst_cdf5format.c +++ b/nc_test/tst_cdf5format.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test fix of bug involving creation of a file with PnetCDF APIs, @@ -23,7 +23,7 @@ write2(int ncid, int parallel) int dimid[NDIM2]; char str[NC_MAX_NAME + 1]; int varid[NVARS]; - + /* define dimension */ if (nc_def_dim(ncid, "Y", NC_UNLIMITED, &dimid[0])) ERR; if (nc_def_dim(ncid, "X", NX, &dimid[1])) ERR; @@ -42,16 +42,16 @@ write2(int ncid, int parallel) if (nc_def_var(ncid, str, NC_INT, 2, dimid, &varid[i])) ERR; } } - + if (nc_enddef(ncid)) ERR; - + /* write all variables */ for (int i = 0; i < NVARS; i++) { size_t start[NDIM2] = {0, 0}; size_t count[NDIM2]; int buf[NX]; - + /* Initialize some data. */ for (int j = 0; j < NX; j++) buf[j] = i * 10 + j; @@ -80,7 +80,7 @@ extend(int ncid) char str[32]; if (nc_redef(ncid)) ERR; - + /* add attributes to make header grow */ for (i = 0; i < NVARS; i++) { @@ -98,7 +98,7 @@ read2(int ncid) for (int i = 0; i < NVARS; i++) { int buf[NX]; - size_t start[2] = {0, 0}, count[2]; + size_t start[2] = {0, 0}, count[2]; if (i % 2) { @@ -109,7 +109,7 @@ read2(int ncid) count[0] = 1; count[1] = NX; } - if (nc_get_vara_int(ncid, i, start, count, buf)) ERR; + if (nc_get_vara_int(ncid, i, start, count, buf)) ERR; for (int j = 0; j < NX; j++) { if (buf[j] != i * 10 + j) @@ -142,12 +142,12 @@ int main(int argc, char* argv[]) if (nc_create_par(FILENAME, cmode, comm, info, &ncid)) ERR; if (write2(ncid, 1)) ERR; if (nc_close(ncid)) ERR; - + /* Re-open the file with pnetCDF (parallel) and add var attributes. */ if (nc_open_par(FILENAME, NC_WRITE, comm, info, &ncid)) ERR; if (extend(ncid)) ERR; if (nc_close(ncid)) ERR; - + /* Open with classic and check. */ if (nc_open(FILENAME, 0, &ncid)) ERR; if (read2(ncid)) ERR; @@ -162,7 +162,7 @@ int main(int argc, char* argv[]) if (nc_create(FILENAME, cmode, &ncid)) ERR; if (write2(ncid, 0)) ERR; if (nc_close(ncid)) ERR; - + /* Re-open the file with CDF5 and add some atts. */ if (nc_open(FILENAME, NC_WRITE, &ncid)) ERR; if (extend(ncid)) ERR; diff --git a/nc_test/tst_def_var_fill.c b/nc_test/tst_def_var_fill.c index affd3156e9..944f754c6b 100644 --- a/nc_test/tst_def_var_fill.c +++ b/nc_test/tst_def_var_fill.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - * Copyright 2005 University Corporation for Atmospheric Research/Unidata + * Copyright 2018 University Corporation for Atmospheric Research/Unidata * See COPYRIGHT file for conditions of use. * * Test per-variable fill mode for classic file formats. @@ -7,12 +7,12 @@ * Author: Wei-keng Liao. */ +#include "config.h" #include #include #include #include - #define CHECK_ERR { \ if (err != NC_NOERR) { \ nerrs++; \ @@ -143,4 +143,3 @@ int main(int argc, char** argv) { return (nerrs > 0); } - diff --git a/nc_test/tst_default_format.c b/nc_test/tst_default_format.c index f1f4e06838..8940500bed 100644 --- a/nc_test/tst_default_format.c +++ b/nc_test/tst_default_format.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include "config.h" #include #include @@ -37,7 +48,7 @@ create_check(char *fname, int cmode, int exp_format) default: break; } -#ifndef USE_NETCDF4 +#ifndef USE_HDF5 if (cmode & NC_NETCDF4) exp_err = NC_ENOTBUILT; #endif @@ -160,7 +171,7 @@ int main(int argc, char *argv[]) nerrs += create_check(fname, cmode, NC_FORMAT_64BIT_OFFSET); #endif -#ifndef USE_NETCDF4 +#ifndef USE_HDF5 err = nc_set_default_format(NC_FORMAT_NETCDF4, NULL); EXP_ERR(NC_ENOTBUILT) err = nc_set_default_format(NC_FORMAT_NETCDF4_CLASSIC, NULL); EXP_ERR(NC_ENOTBUILT) nerrs += create_check(fname, NC_NETCDF4, NC_FORMAT_NETCDF4); diff --git a/nc_test/tst_default_format_pnetcdf.c b/nc_test/tst_default_format_pnetcdf.c index 2e7a4fc3da..a7fa31c0f8 100644 --- a/nc_test/tst_default_format_pnetcdf.c +++ b/nc_test/tst_default_format_pnetcdf.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include "config.h" #include #include diff --git a/nc_test/tst_diskless.c b/nc_test/tst_diskless.c index 73cec34564..5c48769e38 100644 --- a/nc_test/tst_diskless.c +++ b/nc_test/tst_diskless.c @@ -1,7 +1,7 @@ /** \file \internal Basic diskless API tests. -Copyright 2011, UCAR/Unidata. See COPYRIGHT file for copying and +Copyright 2018, UCAR/Unidata. See COPYRIGHT file for copying and redistribution conditions. */ diff --git a/nc_test/tst_diskless2.c b/nc_test/tst_diskless2.c index 14125e7729..38f30fedf3 100644 --- a/nc_test/tst_diskless2.c +++ b/nc_test/tst_diskless2.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include #include #include diff --git a/nc_test/tst_diskless3.c b/nc_test/tst_diskless3.c index 442e823297..d4b75e12a4 100644 --- a/nc_test/tst_diskless3.c +++ b/nc_test/tst_diskless3.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/nc_test/tst_diskless4.c b/nc_test/tst_diskless4.c index ee0e9f6796..be667fe745 100644 --- a/nc_test/tst_diskless4.c +++ b/nc_test/tst_diskless4.c @@ -1,5 +1,5 @@ /* - Copyright 2008, UCAR/Unidata + Copyright 2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This program tests the large file bug in netCDF 3.6.2, diff --git a/nc_test/tst_diskless5.c b/nc_test/tst_diskless5.c index ae4639656b..2148f5741a 100644 --- a/nc_test/tst_diskless5.c +++ b/nc_test/tst_diskless5.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include #include #include diff --git a/nc_test/tst_diskless6.c b/nc_test/tst_diskless6.c index e2c69cf1bb..d968d71b14 100644 --- a/nc_test/tst_diskless6.c +++ b/nc_test/tst_diskless6.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include "config.h" #include #include @@ -215,7 +226,7 @@ main() /* Of the above modified files, re-read and modify but do not re-persist */ /* Test open + modify + rdonly; requires NC_DISKLESS*/ #if 0 - /* Fails with hdf5, file must be writeable even if not persisted */ + /* Fails with hdf5, file must be writeable even if not persisted */ changeaccess(RDONLY); /* prevent re-persist */ #endif printf("*** Testopen modify + rdonly\n"); fflush(stdout); diff --git a/nc_test/tst_err_enddef.c b/nc_test/tst_err_enddef.c index 7d0f9f6cd2..e6a7528394 100644 --- a/nc_test/tst_err_enddef.c +++ b/nc_test/tst_err_enddef.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include #include diff --git a/nc_test/tst_formats.c b/nc_test/tst_formats.c index 814904a5a6..82db86b406 100644 --- a/nc_test/tst_formats.c +++ b/nc_test/tst_formats.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005-2007 University +/* This is part of the netCDF package. Copyright 2005-2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. @@ -36,11 +36,11 @@ determine_test_formats(int *num_formats, int *format) format[ind++] = NC_FORMAT_64BIT_OFFSET; /* Do we have netCDF-4 and netCDF-4 classic? */ -#ifdef USE_NETCDF4 +#ifdef USE_HDF5 num += 2; format[ind++] = NC_FORMAT_NETCDF4; format[ind++] = NC_FORMAT_NETCDF4_CLASSIC; -#endif /* USE_NETCDF4 */ +#endif /* USE_HDF5 */ /* Do we have CDF5? */ #ifdef ENABLE_CDF5 @@ -58,12 +58,12 @@ check_inq_format(int ncid, int expected_format, int expected_extended_format, in int format; int extended_format; int mode; - + if (nc_inq_format(ncid + 66000, NULL) != NC_EBADID) ERR; if (nc_inq_format(ncid, NULL)) ERR; if (nc_inq_format(ncid, &format)) ERR; if (format != expected_format) { - printf("format %d expected_format %d\n", format, expected_format); + printf("format %d expected_format %d\n", format, expected_format); ERR; } if (nc_inq_format_extended(ncid + 66000, &extended_format, &mode) != NC_EBADID) ERR; @@ -72,7 +72,7 @@ check_inq_format(int ncid, int expected_format, int expected_extended_format, in if (nc_inq_format_extended(ncid, NULL, &mode)) ERR; if (mode != expected_mode) { printf("expected_mode %x mode %x\n", expected_mode, mode); - //ERR; + /*ERR;*/ } } { diff --git a/nc_test/tst_formatx_pnetcdf.c b/nc_test/tst_formatx_pnetcdf.c index 2cfbf5e83e..d8275daf38 100644 --- a/nc_test/tst_formatx_pnetcdf.c +++ b/nc_test/tst_formatx_pnetcdf.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test fix of bug involving creation of a file with PnetCDF APIs, @@ -27,7 +27,7 @@ int main(int argc, char* argv[]) int err = 0; int ecode = 0; int ncid; - int cmode, format; + int cmode, format; int nprocs, rank; MPI_Comm comm=MPI_COMM_SELF; MPI_Info info=MPI_INFO_NULL; diff --git a/nc_test/tst_global_fillval.c b/nc_test/tst_global_fillval.c index 4812d3f72a..51415d75a7 100644 --- a/nc_test/tst_global_fillval.c +++ b/nc_test/tst_global_fillval.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2017 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. @@ -33,7 +33,7 @@ main(int argc, char **argv) int *formats = NULL; /* Determine how many formats are in use. */ -#ifdef USE_NETCDF4 +#ifdef USE_HDF5 num_formats += 2; #endif @@ -49,7 +49,7 @@ main(int argc, char **argv) #ifdef ENABLE_CDF5 formats[n++] = NC_64BIT_DATA; #endif -#ifdef USE_NETCDF4 +#ifdef USE_HDF5 formats[n++] = NC_NETCDF4; formats[n++] = NC_CLASSIC_MODEL | NC_NETCDF4; #endif diff --git a/nc_test/tst_inmemory.c b/nc_test/tst_inmemory.c index af3f1b6e10..e5074d65ce 100644 --- a/nc_test/tst_inmemory.c +++ b/nc_test/tst_inmemory.c @@ -1,7 +1,7 @@ /** \file \internal Basic NC_INMEMORY API tests both for netcdf-3 and netcdf-4 -Copyright 2011, UCAR/Unidata. See COPYRIGHT file for copying and +Copyright 2018, UCAR/Unidata. See COPYRIGHT file for copying and redistribution conditions. */ @@ -20,7 +20,7 @@ redistribution conditions. #include "nc_tests.h" #include "err_macros.h" -#ifdef USE_NETCDF4 +#ifdef USE_HDF5 #include extern int H5Eprint1(FILE * stream); #endif @@ -61,8 +61,8 @@ extern int H5Eprint1(FILE * stream); #define NVARS0 3 /* # variables in define_metadata */ #define VAR0_NAME "nightlife" -#define VAR1_NAME "time" -#define VAR2_NAME "taxi_distance" +#define VAR1_NAME "taxi_distance" +#define VAR2_NAME "time" /* Variable added by modify_file */ #define VAR3_NAME "miles" @@ -270,19 +270,19 @@ define_metadata(int ncid) { int stat = NC_NOERR; int dimid[MAXDIMS], varid0, varid1, varid2; - short short_data[DIM1_LEN]; size_t start[1] = {0}; size_t count[1] = {DIM1_LEN}; int dimprod = (DIM0_LEN*DIM1_LEN); int i; float float_data; int nightdata[DIM0_LEN*DIM1_LEN] ; + short taxi_distance[DIM1_LEN] ; /* Create data to write */ float_data = FLOATVAL; for (i = 0; i < DIM1_LEN; i++) - short_data[i] = i; + taxi_distance[i] = i; for (i = 0; i < dimprod; i++) nightdata[i] = (100*i); @@ -294,13 +294,13 @@ define_metadata(int ncid) CHECK(nc_def_dim(ncid, DIM1_NAME, DIM1_LEN, &dimid[1])); CHECK(nc_def_var(ncid, VAR0_NAME, NC_INT, 2, dimid, &varid0)); - CHECK(nc_def_var(ncid, VAR1_NAME, NC_FLOAT, 0, NULL, &varid1)); - CHECK(nc_def_var(ncid, VAR2_NAME, NC_SHORT, 1, &dimid[1], &varid2)); + CHECK(nc_def_var(ncid, VAR1_NAME, NC_SHORT, 1, &dimid[1], &varid1)); + CHECK(nc_def_var(ncid, VAR2_NAME, NC_FLOAT, 0, NULL, &varid2)); CHECK(nc_enddef(ncid)); - CHECK(nc_put_vara_float(ncid, varid1, NULL, NULL, &float_data)); - CHECK(nc_put_vara_short(ncid, varid2, start, count, short_data)); + CHECK(nc_put_vara_short(ncid, varid1, start, count, taxi_distance)); + CHECK(nc_put_var_float(ncid, varid2, &float_data)); { size_t start[2] = {0,0}; @@ -371,7 +371,6 @@ modify_file_extra(int ncid) size_t i; int varidx; int dimid[1]; - size_t len; int data[MAXDIMLEN]; /* open file for new meta-data */ @@ -407,8 +406,9 @@ verify_file(int ncid, int modified, int extra) float float_data_in; int milesdata_in[MAXDIMLEN]; int expenses_in[MAXDIMLEN]; + short taxi_distance_in[MAXDIMLEN]; int dimprod = DIM0_LEN * DIM1_LEN; -#ifdef USE_NETCDF4 +#ifdef USE_HDF5 int tmp; #endif @@ -417,7 +417,7 @@ verify_file(int ncid, int modified, int extra) CHECK(NC_EINVAL); /* Get all the dimids */ -#ifdef USE_NETCDF4 +#ifdef USE_HDF5 tmp = 0; CHECK((nc_inq_dimids(ncid,&tmp,dimid,1))); if(tmp != NDIMS0+extra) CHECK(NC_EINVAL); @@ -456,18 +456,23 @@ verify_file(int ncid, int modified, int extra) if (strcmp(name_in, VAR0_NAME) || type_in != NC_INT || ndims_in != NDIMS0 || dimid_in[0] != 0 || dimid_in[1] != 1 || natts_in != 0) CHECK(NC_EINVAL); CHECK(nc_inq_var(ncid, varid[1], name_in, &type_in, &ndims_in, dimid_in, &natts_in)); - if (strcmp(name_in, VAR1_NAME) || type_in != NC_FLOAT || ndims_in != 0 || - natts_in != 0) CHECK(NC_EINVAL); + if (strcmp(name_in, VAR1_NAME) || type_in != NC_SHORT || ndims_in != 1 || dimid_in[0] != 1 || natts_in != 0) + CHECK(NC_EINVAL); CHECK(nc_inq_var(ncid, varid[2], name_in, &type_in, &ndims_in, dimid_in, &natts_in)); - if (strcmp(name_in, VAR2_NAME) || type_in != NC_SHORT || ndims_in != 1 || - dimid_in[0] != 1 || natts_in != 0) CHECK(NC_EINVAL); + if (strcmp(name_in, VAR2_NAME) || type_in != NC_FLOAT || ndims_in != 0 || natts_in != 0) + CHECK(NC_EINVAL); CHECK(nc_get_var_int(ncid, varid[0], nightdata_in)); for(i=0;i #include @@ -31,4 +42,3 @@ int main(int argc, char *argv[]) err = nc_close(ncid); ERR return (nerrs > 0); } - diff --git a/nc_test/tst_meta.c b/nc_test/tst_meta.c index 7653953a31..c3c68bb2e1 100644 --- a/nc_test/tst_meta.c +++ b/nc_test/tst_meta.c @@ -1,5 +1,5 @@ /* - Copyright 20014, UCAR/Unidata + Copyright 2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This is part of netCDF. diff --git a/nc_test/tst_misc.c b/nc_test/tst_misc.c index 536bec9a2e..097d0357cc 100644 --- a/nc_test/tst_misc.c +++ b/nc_test/tst_misc.c @@ -1,5 +1,5 @@ /* - Copyright 2007, UCAR/Unidata + Copyright 2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This is part of netCDF. @@ -61,20 +61,20 @@ main(int argc, char **argv) } SUMMARIZE_ERR; -#ifndef USE_NETCDF4 +#ifndef USE_NETCDF4 printf("*** Trying to create netCDF-4 file without netCDF-4..."); { int ncid; - + if (nc_create(FILE_NAME, NC_NETCDF4, &ncid) != NC_ENOTBUILT) ERR; } SUMMARIZE_ERR; #endif /* USE_NETCDF4 undefined */ - + #ifdef TEST_PNETCDF MPI_Finalize(); #endif - + FINAL_RESULTS; } diff --git a/nc_test/tst_names.c b/nc_test/tst_names.c index 878ae32d90..0c4cabad98 100644 --- a/nc_test/tst_names.c +++ b/nc_test/tst_names.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2006 University Corporation for Atmospheric Research/Unidata. + Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. This is a very simple example which tests rejection of bad names for @@ -229,7 +229,7 @@ main(int argc, char **argv) , NC_FORMAT_CDF5 #endif -#ifdef USE_NETCDF4 +#ifdef USE_HDF5 , NC_FORMAT_NETCDF4 , diff --git a/nc_test/tst_nofill.c b/nc_test/tst_nofill.c index 684192e2fb..770821bd38 100644 --- a/nc_test/tst_nofill.c +++ b/nc_test/tst_nofill.c @@ -1,5 +1,5 @@ /* - Copyright 2007, UCAR/Unidata + Copyright 2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This is part of netCDF. diff --git a/nc_test/tst_nofill2.c b/nc_test/tst_nofill2.c index e8187f235e..9d85619012 100644 --- a/nc_test/tst_nofill2.c +++ b/nc_test/tst_nofill2.c @@ -1,5 +1,5 @@ /* - Copyright 2011, UCAR/Unidata + Copyright 2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This is part of netCDF. diff --git a/nc_test/tst_nofill3.c b/nc_test/tst_nofill3.c index d9dbbcfdb3..e81b3e8f15 100644 --- a/nc_test/tst_nofill3.c +++ b/nc_test/tst_nofill3.c @@ -1,5 +1,5 @@ /* - Copyright 2011, UCAR/Unidata + Copyright 2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This is part of netCDF. diff --git a/nc_test/tst_norm.c b/nc_test/tst_norm.c index b7918662a8..f16b0e5eed 100644 --- a/nc_test/tst_norm.c +++ b/nc_test/tst_norm.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2006 University Corporation for Atmospheric Research/Unidata. + Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. This is a very simple example which tests NFC normalization of diff --git a/nc_test/tst_open_cdf5.c b/nc_test/tst_open_cdf5.c index 1d5e9b5f69..be8a977aad 100644 --- a/nc_test/tst_open_cdf5.c +++ b/nc_test/tst_open_cdf5.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include "config.h" #include #include diff --git a/nc_test/tst_open_mem.c b/nc_test/tst_open_mem.c index f25a7003fa..4bd2d58e08 100644 --- a/nc_test/tst_open_mem.c +++ b/nc_test/tst_open_mem.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include #include #include @@ -31,8 +42,12 @@ readfile(const char* path, NC_memio* memio) #else f = fopen(path,"r"); #endif - if(f == NULL) - {status = errno; goto done;} + if(f == NULL) { + fprintf(stderr,"cannot open file: %s\n",path); + fflush(stderr); + status = errno; + goto done; + } /* get current filesize */ if(fseek(f,0,SEEK_END) < 0) {status = errno; goto done;} @@ -49,19 +64,20 @@ readfile(const char* path, NC_memio* memio) size_t actual; actual = fread(p,1,count,f); if(actual == 0 || ferror(f)) - {status = NC_EIO; goto done;} + {status = NC_EIO; goto done;} count -= actual; p += actual; } if(memio) { memio->size = (size_t)filesize; memio->memory = memory; - } + memory = NULL; + } done: if(status != NC_NOERR && memory != NULL) free(memory); if(f != NULL) fclose(f); - return status; + return status; } int @@ -82,6 +98,8 @@ main(int argc, char** argv) goto exit; if((retval = nc_close(ncid))) goto exit; + if(mem.memory) + free(mem.memory); return 0; exit: fprintf(stderr,"retval=%d\n",retval); diff --git a/nc_test/tst_parallel2.c b/nc_test/tst_parallel2.c index cfe7d1ed9d..a9c52f4af8 100644 --- a/nc_test/tst_parallel2.c +++ b/nc_test/tst_parallel2.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + /* This is a benchmarking program for netCDF-4 parallel I/O. */ /* Defining USE_MPE causes the MPE trace library to be used (and you @@ -30,7 +41,7 @@ int main(int argc, char **argv) { /* MPI stuff. */ - int mpi_namelen; + int mpi_namelen; char mpi_name[MPI_MAX_PROCESSOR_NAME]; int mpi_size, mpi_rank; MPI_Comm comm = MPI_COMM_WORLD; @@ -43,7 +54,7 @@ main(int argc, char **argv) size_t count[NDIMS] = {1, DIMSIZE, DIMSIZE}; int data[DIMSIZE * DIMSIZE], data_in[DIMSIZE * DIMSIZE]; int j, i; - + char file_name[NC_MAX_NAME + 1]; int ndims_in, nvars_in, natts_in, unlimdimid_in; @@ -63,23 +74,23 @@ main(int argc, char **argv) /* Must be able to evenly divide my slabs between processors. */ if (NUM_SLABS % mpi_size != 0) { - if (!mpi_rank) printf("NUM_SLABS (%d) is not evenly divisible by mpi_size(%d)\n", + if (!mpi_rank) printf("NUM_SLABS (%d) is not evenly divisible by mpi_size(%d)\n", NUM_SLABS, mpi_size); ERR; } #ifdef USE_MPE MPE_Init_log(); - s_init = MPE_Log_get_event_number(); - e_init = MPE_Log_get_event_number(); - s_define = MPE_Log_get_event_number(); - e_define = MPE_Log_get_event_number(); - s_write = MPE_Log_get_event_number(); - e_write = MPE_Log_get_event_number(); - s_close = MPE_Log_get_event_number(); - e_close = MPE_Log_get_event_number(); - s_open = MPE_Log_get_event_number(); - e_open = MPE_Log_get_event_number(); + s_init = MPE_Log_get_event_number(); + e_init = MPE_Log_get_event_number(); + s_define = MPE_Log_get_event_number(); + e_define = MPE_Log_get_event_number(); + s_write = MPE_Log_get_event_number(); + e_write = MPE_Log_get_event_number(); + s_close = MPE_Log_get_event_number(); + e_close = MPE_Log_get_event_number(); + s_open = MPE_Log_get_event_number(); + e_open = MPE_Log_get_event_number(); MPE_Describe_state(s_init, e_init, "Init", "red"); MPE_Describe_state(s_define, e_define, "Define", "yellow"); MPE_Describe_state(s_write, e_write, "Write", "green"); @@ -176,7 +187,7 @@ main(int argc, char **argv) /* Close the netcdf file. */ if (nc_close(ncid)) ERR; - + #ifdef USE_MPE MPE_Log_event(e_close, 0, "end close file"); #endif /* USE_MPE */ @@ -187,7 +198,7 @@ main(int argc, char **argv) #endif if (nc_open_par(file_name, NC_NOWRITE, comm, info, &ncid)) ERR; if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; - if (ndims_in != NDIMS || nvars_in != 1 || natts_in != 1 || + if (ndims_in != NDIMS || nvars_in != 1 || natts_in != 1 || unlimdimid_in != -1) ERR; /* Read all the slabs this process is responsible for. */ @@ -201,10 +212,10 @@ main(int argc, char **argv) /* Read one slab of data. */ if (nc_get_vara_int(ncid, varid, start, count, data_in)) ERR; - + /* Check data. */ for (j = 0; j < DIMSIZE * DIMSIZE; j++) - if (data_in[j] != mpi_rank) + if (data_in[j] != mpi_rank) { ERR; break; @@ -221,7 +232,7 @@ main(int argc, char **argv) /* Close the netcdf file. */ if (nc_close(ncid)) ERR; - + #ifdef USE_MPE MPE_Log_event(e_close, 0, "end close file"); #endif /* USE_MPE */ diff --git a/nc_test/tst_pnetcdf.c b/nc_test/tst_pnetcdf.c index a82a2bb949..1766dad011 100644 --- a/nc_test/tst_pnetcdf.c +++ b/nc_test/tst_pnetcdf.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test fix of bug involving creation of a file with PnetCDF APIs, diff --git a/nc_test/tst_small.c b/nc_test/tst_small.c index 040f7e2164..5515872d08 100644 --- a/nc_test/tst_small.c +++ b/nc_test/tst_small.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. @@ -533,7 +533,7 @@ main(int argc, char **argv) case NC_FORMAT_CDF5: continue; #endif -#ifdef USE_NETCDF4 +#ifdef USE_HDF5 case NC_FORMAT_NETCDF4_CLASSIC: nc_set_default_format(NC_FORMAT_NETCDF4_CLASSIC, NULL); strcpy(testfile, "tst_small_netcdf4_classic.nc"); diff --git a/nc_test/tst_utf8_phrases.c b/nc_test/tst_utf8_phrases.c index 29ec68cc7e..468bd9138a 100644 --- a/nc_test/tst_utf8_phrases.c +++ b/nc_test/tst_utf8_phrases.c @@ -1,6 +1,6 @@ /* - * Copyright 1998-2015 University Corporation for Atmospheric Research/Unidata + * Copyright 1998-2018 University Corporation for Atmospheric Research/Unidata * See the LICENSE file for more information. */ diff --git a/nc_test/util.c b/nc_test/util.c index d7afd1ead7..7cc79e44f6 100644 --- a/nc_test/util.c +++ b/nc_test/util.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1996, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id: util.c 2792 2014-10-27 06:02:59Z wkliao $ *********************************************************************/ @@ -1313,8 +1313,10 @@ char* nc_err_code_name(int err) case (NC_EMPI): return "NC_EMPI"; case (NC_ENULLPAD): return "NC_NULLPAD"; case (NC_EINMEMORY): return "NC_EINMEMORY"; - // case (NC_EURL): return "NC_EURL"; - // case (NC_ECONSTRAINT): return "NC_ECONSTRAINT"; +#if 0 + case (NC_EURL): return "NC_EURL"; + case (NC_ECONSTRAINT): return "NC_ECONSTRAINT"; +#endif #ifdef USE_PNETCDF case (NC_ESMALL): return "NC_ESMALL"; case (NC_ENOTINDEP): return "NC_ENOTINDEP"; diff --git a/nc_test4/CMakeLists.txt b/nc_test4/CMakeLists.txt index 824e27dd4b..a094417f37 100644 --- a/nc_test4/CMakeLists.txt +++ b/nc_test4/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. # Some extra tests SET(NC4_TESTS tst_dims tst_dims2 tst_dims3 tst_files tst_files4 tst_vars tst_varms tst_unlim_vars tst_converts tst_converts2 diff --git a/nc_test4/bigmeta.c b/nc_test4/bigmeta.c index fb2054eb2c..f49c052477 100644 --- a/nc_test4/bigmeta.c +++ b/nc_test4/bigmeta.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + /* Create a netcdf-4 file with horrendously large metadata. */ @@ -155,7 +166,7 @@ buildgroup(int parent, int grpindex, int depth) snprintf(name,NC_MAX_NAME,"g%d",grpindex); CHECK(nc_def_grp(parent, name, &grpid)); - + /* Add dimensions and capture ids */ for(i=0;i #include "err_macros.h" #include diff --git a/nc_test4/tst_camrun.c b/nc_test4/tst_camrun.c index 2ce9cbbb02..5b96bc3f89 100644 --- a/nc_test4/tst_camrun.c +++ b/nc_test4/tst_camrun.c @@ -1,5 +1,5 @@ /* - Copyright 2010, UCAR/Unidata + Copyright 2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This program writes a data file from the CAM model run. (Thanks to diff --git a/nc_test4/tst_chunks.c b/nc_test4/tst_chunks.c index 9279c6d97b..48ea1eb943 100644 --- a/nc_test4/tst_chunks.c +++ b/nc_test4/tst_chunks.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf-4 variables. diff --git a/nc_test4/tst_chunks2.c b/nc_test4/tst_chunks2.c index b6ac94a7e9..f540faefe3 100644 --- a/nc_test4/tst_chunks2.c +++ b/nc_test4/tst_chunks2.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2011 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf-4 chunking. diff --git a/nc_test4/tst_chunks3.c b/nc_test4/tst_chunks3.c index bd952cfede..dc6d8b49f3 100644 --- a/nc_test4/tst_chunks3.c +++ b/nc_test4/tst_chunks3.c @@ -60,7 +60,7 @@ long inb, oub; \ char time_mess[100]; \ float seconds; - + #define TIMING_START \ TMrepeats = 1; \ do { \ @@ -71,7 +71,7 @@ inb = ru.ru_inblock; \ oub = ru.ru_oublock; \ for(TMreps=0; TMreps < TMrepeats; TMreps++) { - + #define TIMING_END(seconds) \ } \ if(getrusage(RUSAGE_SELF, &ru)) { \ @@ -99,7 +99,7 @@ return n; \ void parse_args(int argc, char *argv[], /* from command-line invocation */ - int *deflate_levelp, /* returned: 0 uncompressed, + int *deflate_levelp, /* returned: 0 uncompressed, 1-9 compression level */ int *shufflep, /* returned: 1 if shuffle, otherwise 0 */ size_t *dims, /* returned: dimension sizes */ @@ -128,7 +128,7 @@ parse_args(int argc, char *argv[], /* from command-line invocation */ dims[1] = dims[0]; if(argc > 5) chunks[1] = atol(argv[5]); - else + else chunks[1] = chunks[0]; if(argc > 6) dims[2] = atol(argv[6]); @@ -145,10 +145,10 @@ parse_args(int argc, char *argv[], /* from command-line invocation */ if(argc > 10) *cache_prep = atof(argv[10]); if(argc > 11) { - printf("Usage: %s [def_level] [dim1] [chunk1] [dim2] [chunk2] [dim3] [chunk3] [cache_size] [cache_nelems] [cache_pre]\n", + printf("Usage: %s [def_level] [dim1] [chunk1] [dim2] [chunk2] [dim3] [chunk3] [cache_size] [cache_nelems] [cache_pre]\n", argv[0]); exit(1); - } + } return; } @@ -204,11 +204,11 @@ main(int argc, char *argv[]) { /* From args, get parameters for timing, including variable and chunk sizes. Negative deflate level means also use shuffle filter. */ - parse_args(argc, argv, &deflate_level, &shuffle, dims, + parse_args(argc, argv, &deflate_level, &shuffle, dims, chunks, &cache_size, &cache_hash, &cache_pre); /* get cache defaults, then set cache parameters that are not default */ - if((stat = nc_get_chunk_cache(&cache_size_def, &cache_hash_def, + if((stat = nc_get_chunk_cache(&cache_size_def, &cache_hash_def, &cache_pre_def))) ERR1(stat); if(cache_size == 0) @@ -219,7 +219,7 @@ main(int argc, char *argv[]) { cache_pre = cache_pre_def; if((stat = nc_set_chunk_cache(cache_size, cache_hash, cache_pre))) ERR1(stat); - printf("cache: %3.2f MBytes %ld objs %3.2f preempt, ", + printf("cache: %3.2f MBytes %ld objs %3.2f preempt, ", cache_size/1.e6, cache_hash, cache_pre); if(deflate_level == 0) { @@ -257,7 +257,7 @@ main(int argc, char *argv[]) { if((stat = nc_create(FILENAME, NC_NETCDF4 | NC_CLASSIC_MODEL, &ncid))) ERR1(stat); - + /* define dimensions */ if((stat = nc_def_dim(ncid, "dim1", dims[0], &dim1id))) ERR1(stat); @@ -265,18 +265,18 @@ main(int argc, char *argv[]) { ERR1(stat); if((stat = nc_def_dim(ncid, "dim3", dims[2], &dim3id))) ERR1(stat); - + /* define variables */ var_dims[0] = dim1id; var_dims[1] = dim2id; var_dims[2] = dim3id; - if((stat = nc_def_var(ncid, "var_contiguous", NC_FLOAT, RANK_var1, + if((stat = nc_def_var(ncid, "var_contiguous", NC_FLOAT, RANK_var1, var_dims, &varid_g))) ERR1(stat); - if((stat = nc_def_var(ncid, "var_chunked", NC_FLOAT, RANK_var1, + if((stat = nc_def_var(ncid, "var_chunked", NC_FLOAT, RANK_var1, var_dims, &varid_k))) ERR1(stat); - if((stat = nc_def_var(ncid, "var_compressed", NC_FLOAT, RANK_var1, + if((stat = nc_def_var(ncid, "var_compressed", NC_FLOAT, RANK_var1, var_dims, &varid_x))) ERR1(stat); @@ -290,7 +290,7 @@ main(int argc, char *argv[]) { ERR1(stat); if (deflate_level != 0) { - if((stat = nc_def_var_deflate(ncid, varid_x, shuffle, + if((stat = nc_def_var_deflate(ncid, varid_x, shuffle, NC_COMPRESSED, deflate_level))) ERR1(stat); } @@ -298,7 +298,7 @@ main(int argc, char *argv[]) { /* leave define mode */ if((stat = nc_enddef (ncid))) ERR1(stat); - + /* write each variable one yz slab at a time */ start[0] = 0; start[1] = 0; @@ -404,7 +404,7 @@ main(int argc, char *argv[]) { else printf(" %5.2g x slower\n", 1.0/ratio); printf("\n"); - + /* write each variable one xy slab at a time */ start[0] = 0; start[1] = 0; @@ -424,7 +424,7 @@ main(int argc, char *argv[]) { TIMING_END(TMsec) ; printf("\n"); contig_time = TMsec; - + sprintf(time_mess," chunked write %3ld %3ld %3d %3ld %3ld %3ld", dims[0], dims[1], 1, chunks[0], chunks[1], chunks[2]); TIMING_START ; @@ -477,7 +477,7 @@ main(int argc, char *argv[]) { TIMING_END(TMsec) ; printf("\n"); contig_time = TMsec; - + sprintf(time_mess," chunked read %3d %3ld %3ld %3ld %3ld %3ld", 1, dims[1], dims[2] , chunks[0], chunks[1], chunks[2]); TIMING_START ; @@ -493,7 +493,7 @@ main(int argc, char *argv[]) { printf(" %5.2g x faster\n", ratio); else printf(" %5.2g x slower\n", 1.0/ratio); - + sprintf(time_mess," compressed read %3d %3ld %3ld %3ld %3ld %3ld", 1, dims[1], dims[2] , chunks[0], chunks[1], chunks[2]); TIMING_START ; @@ -530,7 +530,7 @@ main(int argc, char *argv[]) { TIMING_END(TMsec) ; printf("\n"); contig_time = TMsec; - + sprintf(time_mess," chunked read %3ld %3d %3ld %3ld %3ld %3ld", dims[0], 1, dims[2], chunks[0], chunks[1], chunks[2]); TIMING_START ; @@ -546,7 +546,7 @@ main(int argc, char *argv[]) { printf(" %5.2g x faster\n", ratio); else printf(" %5.2g x slower\n", 1.0/ratio); - + sprintf(time_mess," compressed read %3ld %3d %3ld %3ld %3ld %3ld", dims[0], 1, dims[2], chunks[0], chunks[1], chunks[2]); TIMING_START ; diff --git a/nc_test4/tst_compounds.c b/nc_test4/tst_compounds.c index d1601d60de..f91c210021 100644 --- a/nc_test4/tst_compounds.c +++ b/nc_test4/tst_compounds.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf-4 compound type feature. diff --git a/nc_test4/tst_compounds2.c b/nc_test4/tst_compounds2.c index c6d8556bb3..7b1af1de96 100644 --- a/nc_test4/tst_compounds2.c +++ b/nc_test4/tst_compounds2.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf-4 compound type feature. diff --git a/nc_test4/tst_compounds3.c b/nc_test4/tst_compounds3.c index adda5b546d..c09cb0b448 100644 --- a/nc_test4/tst_compounds3.c +++ b/nc_test4/tst_compounds3.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf-4 compound type feature, even more. diff --git a/nc_test4/tst_converts.c b/nc_test4/tst_converts.c index b6cb74bd30..43507e87ee 100644 --- a/nc_test4/tst_converts.c +++ b/nc_test4/tst_converts.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test data conversions and fill value handling. diff --git a/nc_test4/tst_converts2.c b/nc_test4/tst_converts2.c index 1e870e9815..0f3bd92258 100644 --- a/nc_test4/tst_converts2.c +++ b/nc_test4/tst_converts2.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test even more data conversions. diff --git a/nc_test4/tst_coords.c b/nc_test4/tst_coords.c index d5acaf25b6..000b8a632b 100644 --- a/nc_test4/tst_coords.c +++ b/nc_test4/tst_coords.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2009 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. diff --git a/nc_test4/tst_coords2.c b/nc_test4/tst_coords2.c index 952597b585..29f9d713de 100644 --- a/nc_test4/tst_coords2.c +++ b/nc_test4/tst_coords2.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2009 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. diff --git a/nc_test4/tst_coords3.c b/nc_test4/tst_coords3.c index f03cc7c46f..8930259ab1 100644 --- a/nc_test4/tst_coords3.c +++ b/nc_test4/tst_coords3.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2010 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. diff --git a/nc_test4/tst_dims.c b/nc_test4/tst_dims.c index caf278d08f..3bcf814691 100644 --- a/nc_test4/tst_dims.c +++ b/nc_test4/tst_dims.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/nc_test4/tst_dims2.c b/nc_test4/tst_dims2.c index cebf9e3e9f..db38a9bf37 100644 --- a/nc_test4/tst_dims2.c +++ b/nc_test4/tst_dims2.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2008 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/nc_test4/tst_dims3.c b/nc_test4/tst_dims3.c index f9fbba8fad..92978f6086 100644 --- a/nc_test4/tst_dims3.c +++ b/nc_test4/tst_dims3.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2008 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/nc_test4/tst_elatefill.c b/nc_test4/tst_elatefill.c index 99dece2845..9b24747732 100644 --- a/nc_test4/tst_elatefill.c +++ b/nc_test4/tst_elatefill.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2017 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/nc_test4/tst_empty_vlen_unlim.c b/nc_test4/tst_empty_vlen_unlim.c index d1d18971df..464fc7a580 100644 --- a/nc_test4/tst_empty_vlen_unlim.c +++ b/nc_test4/tst_empty_vlen_unlim.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. @@ -50,9 +50,11 @@ int main() { printf("\t* Creating File:\tnc_create()\n"); if (nc_create(FILE_NAME_UNLIM, NC_NETCDF4 | NC_CLOBBER, &ncid)) ERR; +#if 0 /* Set fill mode */ - //printf("\t* Setting fill mode:\tnc_set_fill()\n"); - //if(nc_set_fill(ncid,NC_FILL,NULL)) ERR; + printf("\t* Setting fill mode:\tnc_set_fill()\n"); + if(nc_set_fill(ncid,NC_FILL,NULL)) ERR; +#endif /* Create Dimension */ printf("\t* Defining Unlimited Dimension:\tnc_def_dim()\n"); @@ -142,10 +144,11 @@ int main() { printf("\t* Creating File:\tnc_create()\n"); if (nc_create(FILE_NAME_LIM, NC_NETCDF4 | NC_CLOBBER, &ncid)) ERR; +#if 0 /* Set fill mode */ - //printf("\t* Setting fill mode:\tnc_set_fill()\n"); - //if(nc_set_fill(ncid,NC_FILL,NULL)) ERR; - + printf("\t* Setting fill mode:\tnc_set_fill()\n"); + if(nc_set_fill(ncid,NC_FILL,NULL)) ERR; +#endif /* Create Dimension */ printf("\t* Defining Unlimited Dimension:\tnc_def_dim()\n"); if (nc_def_dim(ncid, DIM_NAME, DIM_LEN_LIM, &dimid)) ERR; diff --git a/nc_test4/tst_endian_fill.c b/nc_test4/tst_endian_fill.c index 38afba139c..22cbfb8ed5 100644 --- a/nc_test4/tst_endian_fill.c +++ b/nc_test4/tst_endian_fill.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2008 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/nc_test4/tst_enums.c b/nc_test4/tst_enums.c index 977d73cb4b..ba2cf5fe4b 100644 --- a/nc_test4/tst_enums.c +++ b/nc_test4/tst_enums.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/nc_test4/tst_files.c b/nc_test4/tst_files.c index 55ee7a30ca..d8927d8ecb 100644 --- a/nc_test4/tst_files.c +++ b/nc_test4/tst_files.c @@ -431,10 +431,10 @@ test_redef(int format) cache_size_in = 0; if (nc_get_chunk_cache(&cache_size_in, NULL, NULL)) ERR; if (cache_size_in != NEW_CACHE_SIZE) ERR; - cache_nelems_in = 0; + cache_nelems_in = 0; if (nc_get_chunk_cache(NULL, &cache_nelems_in, NULL)) ERR; if (cache_nelems_in != NEW_CACHE_NELEMS) ERR; - cache_preemption_in = 0; + cache_preemption_in = 0; if (nc_get_chunk_cache(NULL, NULL, &cache_preemption_in)) ERR; if (cache_preemption_in != NEW_CACHE_PREEMPTION) ERR; @@ -463,7 +463,7 @@ test_redef(int format) -1) != NC_EINVAL) ERR; if (nc_set_chunk_cache_ints(NEW_CACHE_SIZE_2, NEW_CACHE_NELEMS_2, 101) != NC_EINVAL) ERR; - + /* Change chunk cache again. */ if (nc_set_chunk_cache_ints(NEW_CACHE_SIZE_2, NEW_CACHE_NELEMS_2, @@ -472,7 +472,7 @@ test_redef(int format) &cache_preemption_int_in)) ERR; if (cache_size_int_in != NEW_CACHE_SIZE_2 || cache_nelems_int_in != NEW_CACHE_NELEMS_2 || cache_preemption_int_in != (int)(NEW_CACHE_PREEMPTION_2 * 100)) ERR; - + /* This will fail, except for netcdf-4/hdf5, which permits any * name. */ diff --git a/nc_test4/tst_files4.c b/nc_test4/tst_files4.c index a83523a30e..062677b648 100644 --- a/nc_test4/tst_files4.c +++ b/nc_test4/tst_files4.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2010 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf-4 file from user-reported error. This code based on an diff --git a/nc_test4/tst_files5.c b/nc_test4/tst_files5.c index e6dd57fd4f..922a4ff7e7 100644 --- a/nc_test4/tst_files5.c +++ b/nc_test4/tst_files5.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2010 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf files a bit. diff --git a/nc_test4/tst_files6.c b/nc_test4/tst_files6.c index 3e660e4320..49bae17a7d 100644 --- a/nc_test4/tst_files6.c +++ b/nc_test4/tst_files6.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2010 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf files a bit. diff --git a/nc_test4/tst_fill_attr_vanish.c b/nc_test4/tst_fill_attr_vanish.c index 189d20b11f..392b489e4f 100644 --- a/nc_test4/tst_fill_attr_vanish.c +++ b/nc_test4/tst_fill_attr_vanish.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2016 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Based on tst_fillbug.c diff --git a/nc_test4/tst_fillbug.c b/nc_test4/tst_fillbug.c index b4a04e22c2..6d4f14da85 100644 --- a/nc_test4/tst_fillbug.c +++ b/nc_test4/tst_fillbug.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2008 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test for a bug that Russ found testing fill values. diff --git a/nc_test4/tst_fills.c b/nc_test4/tst_fills.c index 808eb3c105..240f4b4119 100644 --- a/nc_test4/tst_fills.c +++ b/nc_test4/tst_fills.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2008 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/nc_test4/tst_fills2.c b/nc_test4/tst_fills2.c index 323e5d0914..d29a6adfe7 100644 --- a/nc_test4/tst_fills2.c +++ b/nc_test4/tst_fills2.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2008 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/nc_test4/tst_filterparser.c b/nc_test4/tst_filterparser.c index 9e83e987d3..333b49f2fd 100644 --- a/nc_test4/tst_filterparser.c +++ b/nc_test4/tst_filterparser.c @@ -1,5 +1,5 @@ /* - Copyright 2008, UCAR/Unidata + Copyright 2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. */ @@ -14,7 +14,8 @@ #define PARAMS_ID 32768 /* The C standard apparently defines all floating point constants as double; - we rely on that in this code. + we rely on that in this code. Update: apparently not true when + -ansi flag is used. */ #define DBLVAL 12345678.12345678 @@ -25,12 +26,11 @@ static unsigned int baseline[NPARAMS]; /* Expected contents of baseline: id = 32768 -params = 4294967279, 23, 4294967271, 27, 77, 93, 1145389056, 3287505826, 1097305129, 1, 2147483648, 4294967295, 4294967295 +params = 4294967279, 23, 4294967271, 27, 77, 93, 1145389056, 3287505826, 1097305129, 1, 2147483647, 4294967295U, 4294967295U */ static const char* spec = -"32768, -17b, 23ub, -25S, 27US, 77, 93U, 789f, 12345678.12345678d, -9223372036854775807L, 18446744073709551615UL, 2147483647, -2147483648, 4294967295"; - +"32768, -17b, 23ub, -25S, 27US, 77, 93U, 789f, 12345678.12345678d, -9223372036854775807L, 18446744073709551615UL, 2147483647, -2147483648, 4294967295U"; /* Test support for the conversions */ /* Not sure if this kind of casting via union is legal C99 */ @@ -55,7 +55,7 @@ static int nerrs = 0; static void mismatch(size_t i, unsigned int *params, const char* tag) { - fprintf(stderr,"mismatch: %s [%d] baseline=%ud params=%u\n",tag,(int)i,baseline[i],params[i]); + fprintf(stderr,"mismatch: %s [%d] baseline=%u params=%u\n",tag,(int)i,baseline[i],params[i]); fflush(stderr); nerrs++; } @@ -63,7 +63,7 @@ mismatch(size_t i, unsigned int *params, const char* tag) static void mismatch2(size_t i, unsigned int *params, const char* tag) { - fprintf(stderr,"mismatch2: %s [%ld-%ld] baseline=%ud,%ud params=%u,%u\n", + fprintf(stderr,"mismatch2: %s [%ld-%ld] baseline=%u,%u params=%u,%u\n", tag,(long)i,(long)(i+1),baseline[i],baseline[i+1],params[i],params[i+1]); fflush(stderr); nerrs++; @@ -106,9 +106,9 @@ buildbaseline(void) insert(11,&val8,sizeof(val8)); /* 11 unsigned long long */ val4 = 2147483647; insert(13,&val4,sizeof(val4)); /* 13 signed int */ - val4 = -2147483648; + val4 = (-2147483647)-1; insert(14,&val4,sizeof(val4)); /* 14 signed int */ - val4 = 4294967295; + val4 = 4294967295U; insert(15,&val4,sizeof(val4)); /* 15 unsigned int */ } @@ -145,7 +145,7 @@ main(int argc, char **argv) #ifdef WORD_BIGENDIAN byteswap8((unsigned char*)&ud.d); #endif - if(ud.d != DBLVAL) + if(ud.d != (double)DBLVAL) mismatch2(7,params,"ud.d"); ul.ui[0] = params[9]; ul.ui[1] = params[10]; diff --git a/nc_test4/tst_grps.c b/nc_test4/tst_grps.c index 8959e03538..528f3efbbc 100644 --- a/nc_test4/tst_grps.c +++ b/nc_test4/tst_grps.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf-4 group code. diff --git a/nc_test4/tst_grps2.c b/nc_test4/tst_grps2.c index 55d10ad0d2..bf6441242f 100644 --- a/nc_test4/tst_grps2.c +++ b/nc_test4/tst_grps2.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2010 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf-4 group code some more. diff --git a/nc_test4/tst_h5_endians.c b/nc_test4/tst_h5_endians.c index 081f8782a3..6984bd5a3b 100644 --- a/nc_test4/tst_h5_endians.c +++ b/nc_test4/tst_h5_endians.c @@ -1,4 +1,10 @@ /*! Test for NCF-331. Added May 11, 2015. + * Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, + * 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, + * 2015, 2016, 2017, 2018 + * University Corporation for Atmospheric Research/Unidata. + * + * See \ref copyright file for more info. * See the following links for more information: * * o Issue on GitHub: https://github.com/Unidata/netcdf-c/issues/112 diff --git a/nc_test4/tst_h_converts.c b/nc_test4/tst_h_converts.c index 4a6bb49adb..862ae2a21f 100644 --- a/nc_test4/tst_h_converts.c +++ b/nc_test4/tst_h_converts.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test HDF5 file code. These are not intended to be exhaustive tests, diff --git a/nc_test4/tst_h_many_atts.c b/nc_test4/tst_h_many_atts.c index d0ee537b68..f484c43103 100644 --- a/nc_test4/tst_h_many_atts.c +++ b/nc_test4/tst_h_many_atts.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test HDF5 file code. These are not intended to be exhaustive tests, diff --git a/nc_test4/tst_h_refs.c b/nc_test4/tst_h_refs.c index 95949be4d7..7610e42f87 100644 --- a/nc_test4/tst_h_refs.c +++ b/nc_test4/tst_h_refs.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. diff --git a/nc_test4/tst_h_scalar.c b/nc_test4/tst_h_scalar.c index fbd40ca8f2..c21b0ecb45 100644 --- a/nc_test4/tst_h_scalar.c +++ b/nc_test4/tst_h_scalar.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2013 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. diff --git a/nc_test4/tst_h_strbug.c b/nc_test4/tst_h_strbug.c index b819604109..eb76e5fa0e 100644 --- a/nc_test4/tst_h_strbug.c +++ b/nc_test4/tst_h_strbug.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. diff --git a/nc_test4/tst_h_strings3.c b/nc_test4/tst_h_strings3.c index 0bf8b2f66b..5c125b2b53 100644 --- a/nc_test4/tst_h_strings3.c +++ b/nc_test4/tst_h_strings3.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2010 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. diff --git a/nc_test4/tst_h_vl2.c b/nc_test4/tst_h_vl2.c index 9d4d77e38a..cc4ba27fe2 100644 --- a/nc_test4/tst_h_vl2.c +++ b/nc_test4/tst_h_vl2.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. diff --git a/nc_test4/tst_hdf5_file_compat.c b/nc_test4/tst_hdf5_file_compat.c index 4813d9d253..01926702b3 100644 --- a/nc_test4/tst_hdf5_file_compat.c +++ b/nc_test4/tst_hdf5_file_compat.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2016 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Tests library ability to open files generated by a netcdf diff --git a/nc_test4/tst_interops.c b/nc_test4/tst_interops.c index 086336e30e..f7662e42b4 100644 --- a/nc_test4/tst_interops.c +++ b/nc_test4/tst_interops.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test that HDF5 and NetCDF-4 can read and write the same file. diff --git a/nc_test4/tst_interops4.c b/nc_test4/tst_interops4.c index d655ab33a4..535a80e4fe 100644 --- a/nc_test4/tst_interops4.c +++ b/nc_test4/tst_interops4.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005-2011, University +/*! This is part of the netCDF package. Copyright 2005-2018, University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. diff --git a/nc_test4/tst_interops5.c b/nc_test4/tst_interops5.c index 44c3274e8f..3faf379ade 100644 --- a/nc_test4/tst_interops5.c +++ b/nc_test4/tst_interops5.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005-2011, University +/* This is part of the netCDF package. Copyright 2005-2018, University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. diff --git a/nc_test4/tst_interops6.c b/nc_test4/tst_interops6.c index ef9221900e..32086dd867 100644 --- a/nc_test4/tst_interops6.c +++ b/nc_test4/tst_interops6.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2010 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. diff --git a/nc_test4/tst_large.c b/nc_test4/tst_large.c index 5afac598b6..4aa9a47dee 100644 --- a/nc_test4/tst_large.c +++ b/nc_test4/tst_large.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf-4 large file fill values. diff --git a/nc_test4/tst_large2.c b/nc_test4/tst_large2.c index 48cbe3ebed..0a61e57ab5 100644 --- a/nc_test4/tst_large2.c +++ b/nc_test4/tst_large2.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2010 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test large file problems reported by user. This test based on code diff --git a/nc_test4/tst_large3.c b/nc_test4/tst_large3.c index 4f43a6a4c5..780d4114ad 100644 --- a/nc_test4/tst_large3.c +++ b/nc_test4/tst_large3.c @@ -1,5 +1,5 @@ /* - Copyright 2007, UCAR/Unidata + Copyright 2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This program (quickly, but not thoroughly) tests the large file diff --git a/nc_test4/tst_large5.c b/nc_test4/tst_large5.c index 0b5c401a45..2b3eaf8248 100644 --- a/nc_test4/tst_large5.c +++ b/nc_test4/tst_large5.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2010 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test large file problems reported by user. This test based on code diff --git a/nc_test4/tst_mem.c b/nc_test4/tst_mem.c index fcfec9e58f..6e03bc12e2 100644 --- a/nc_test4/tst_mem.c +++ b/nc_test4/tst_mem.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test internal netcdf-4 file code. diff --git a/nc_test4/tst_mode.c b/nc_test4/tst_mode.c index 3d6b945ad5..25c5da01bf 100644 --- a/nc_test4/tst_mode.c +++ b/nc_test4/tst_mode.c @@ -1,5 +1,13 @@ -/** - * @file +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + + * Test some illegal mode combinations * */ diff --git a/nc_test4/tst_mpi_parallel.c b/nc_test4/tst_mpi_parallel.c index 73233457d6..6bdcb710e3 100644 --- a/nc_test4/tst_mpi_parallel.c +++ b/nc_test4/tst_mpi_parallel.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + /* This is a quickie tester for netcdf-4. This just excersizes MPI file I/O to make sure everything's working diff --git a/nc_test4/tst_nc4perf.c b/nc_test4/tst_nc4perf.c index 032e768202..af39e20943 100644 --- a/nc_test4/tst_nc4perf.c +++ b/nc_test4/tst_nc4perf.c @@ -1,5 +1,5 @@ /* -Copyright 2009, UCAR/Unidata +Copyright 2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This program tests netcdf-4 parallel I/O. These tests are based on the diff --git a/nc_test4/tst_nc_converts.c b/nc_test4/tst_nc_converts.c index 25fcffac69..15ab7efa92 100644 --- a/nc_test4/tst_nc_converts.c +++ b/nc_test4/tst_nc_converts.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test some things about how classic netCDF behaves. diff --git a/nc_test4/tst_opaques.c b/nc_test4/tst_opaques.c index 731f8db692..c5130a3766 100644 --- a/nc_test4/tst_opaques.c +++ b/nc_test4/tst_opaques.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/nc_test4/tst_parallel.c b/nc_test4/tst_parallel.c index 07c53b10b2..1ed128fb05 100644 --- a/nc_test4/tst_parallel.c +++ b/nc_test4/tst_parallel.c @@ -1,5 +1,5 @@ /* -Copyright 2009, UCAR/Unidata +Copyright 2018, UCAR/Unidata See COPYRIGHT file for copying and redistribution conditions. This program tests netcdf-4 parallel I/O. diff --git a/nc_test4/tst_parallel4.c b/nc_test4/tst_parallel4.c index 4f11d5e537..b2e8df2645 100644 --- a/nc_test4/tst_parallel4.c +++ b/nc_test4/tst_parallel4.c @@ -1,4 +1,4 @@ -/* Copyright 2007-2011, UCAR/Unidata. See COPYRIGHT file for copying +/* Copyright 2007-2018, UCAR/Unidata. See COPYRIGHT file for copying and redistribution conditions. This is part of the netCDF package. diff --git a/nc_test4/tst_put_vars.c b/nc_test4/tst_put_vars.c index 54ad1209b7..a74bee6385 100644 --- a/nc_test4/tst_put_vars.c +++ b/nc_test4/tst_put_vars.c @@ -1,4 +1,11 @@ -/*! Test added as part of JIRA ticket NCF-326. +/*! \file Test added as part of JIRA ticket NCF-326. + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. The test was provided by Ellen Johnson at Mathworks. diff --git a/nc_test4/tst_put_vars_two_unlim_dim.c b/nc_test4/tst_put_vars_two_unlim_dim.c index 785d0d56ba..8cbd2be28c 100644 --- a/nc_test4/tst_put_vars_two_unlim_dim.c +++ b/nc_test4/tst_put_vars_two_unlim_dim.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + /* * Test contributed in support of netCDF issue * https://github.com/Unidata/netcdf-c/issues/160 diff --git a/nc_test4/tst_rehash.c b/nc_test4/tst_rehash.c index c594bd1ccf..bd21daa01e 100644 --- a/nc_test4/tst_rehash.c +++ b/nc_test4/tst_rehash.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2016 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Provided in support of https://github.com/Unidata/netcdf-c/issues/282 diff --git a/nc_test4/tst_rename.c b/nc_test4/tst_rename.c index 4b0184a41a..05eb85979e 100644 --- a/nc_test4/tst_rename.c +++ b/nc_test4/tst_rename.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + /* * Test renames of vars and dims. It's a surprisingly tricky business. * diff --git a/nc_test4/tst_rename2.c b/nc_test4/tst_rename2.c index 53213ca5ff..5382e78131 100644 --- a/nc_test4/tst_rename2.c +++ b/nc_test4/tst_rename2.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + /* * Test more renames of vars and dims. * @@ -46,7 +57,7 @@ main(int argc, char **argv) { sprintf(filename, "%s_%d_%d.nc", TEST_NAME, formats[format], enddef_setting); - + /* Create file with three dims. */ if (nc_create(filename, 0, &ncid)) ERR; if (nc_def_dim(ncid, LAT, DIM1_LEN, &dimid[0])) ERR; @@ -58,15 +69,15 @@ main(int argc, char **argv) if (nc_enddef(ncid)) ERR; if (nc_redef(ncid)) ERR; } - + /* Rename the dimensions. */ if (nc_rename_dim(ncid, 0, DIM_X)) ERR; if (nc_rename_dim(ncid, 1, DIM_Y)) ERR; if (nc_rename_dim(ncid, 2, DIM_Z)) ERR; - + /* Close the file. */ if (nc_close(ncid)) ERR; - + /* Reopen the file and check. */ if (nc_open(filename, NC_NOWRITE, &ncid)) ERR; if (nc_inq_dimid(ncid, DIM_X, &dimid_in)) ERR; @@ -93,7 +104,7 @@ main(int argc, char **argv) if (nc_set_default_format(formats[format], NULL)) ERR; sprintf(filename, "%s_data_%d.nc", TEST_NAME, formats[format]); - + /* Create file with three dims. */ if (nc_create(filename, 0, &ncid)) ERR; if (nc_def_dim(ncid, LAT, DIM1_LEN, &dimid[0])) ERR; @@ -114,15 +125,15 @@ main(int argc, char **argv) if (nc_close(ncid)) ERR; if (nc_open(filename, NC_WRITE, &ncid)) ERR; if (nc_redef(ncid)) ERR; - + /* Rename the dimensions. */ if (nc_rename_dim(ncid, 0, DIM_X)) ERR; if (nc_rename_dim(ncid, 1, DIM_Y)) ERR; if (nc_rename_dim(ncid, 2, DIM_Z)) ERR; - + /* Close the file. */ if (nc_close(ncid)) ERR; - + /* Reopen the file and check. */ if (nc_open(filename, NC_NOWRITE, &ncid)) ERR; if (nc_inq_dimid(ncid, DIM_X, &dimid_in)) ERR; @@ -134,7 +145,7 @@ main(int argc, char **argv) if (nc_close(ncid)) ERR; } SUMMARIZE_ERR; - + } /* next format */ FINAL_RESULTS; } diff --git a/nc_test4/tst_simplerw_coll_r.c b/nc_test4/tst_simplerw_coll_r.c index cd25cbcf18..bf6637df69 100644 --- a/nc_test4/tst_simplerw_coll_r.c +++ b/nc_test4/tst_simplerw_coll_r.c @@ -1,4 +1,4 @@ -/* Copyright 2007-2011, UCAR/Unidata. See COPYRIGHT file for copying +/* Copyright 2007-2018, UCAR/Unidata. See COPYRIGHT file for copying * and redistribution conditions. * * This is part of the netCDF package. @@ -113,7 +113,7 @@ main(int argc, char **argv) unsigned int uint_fill_value_in; long long int int64_fill_value_in; unsigned long long int uint64_fill_value_in; - + /* Data to write and read. */ signed char byte_data[DIMSIZE * DIMSIZE], byte_data_in[DIMSIZE * DIMSIZE]; unsigned char char_data[DIMSIZE * DIMSIZE], char_data_in[DIMSIZE * DIMSIZE]; @@ -126,7 +126,7 @@ main(int argc, char **argv) unsigned int uint_data[DIMSIZE * DIMSIZE], uint_data_in[DIMSIZE * DIMSIZE]; long long int int64_data[DIMSIZE * DIMSIZE], int64_data_in[DIMSIZE * DIMSIZE]; unsigned long long int uint64_data[DIMSIZE * DIMSIZE], uint64_data_in[DIMSIZE * DIMSIZE]; - + if (!mpi_rank) printf("*** writing a %d x %d x %d file from %d processors for fill value test %d type %d...\n", NUM_SLABS, DIMSIZE, DIMSIZE, mpi_size, fv, test_type[tt]); @@ -234,7 +234,7 @@ main(int argc, char **argv) fill_value_in = &uint64_fill_value_in; break; } - + /* Create a file name. */ sprintf(file_name, "%s_type_%d_fv_%d.nc", TEST_NAME, test_type[tt], fv); @@ -268,7 +268,7 @@ main(int argc, char **argv) if (nc_def_var_fill(ncid, varid, NC_NOFILL, NULL)) ERR; if (nc_inq_var_fill(ncid, varid, &fill_mode_in, NULL)) ERR; if (!fill_mode_in) ERR; /* nofill will be true */ - } + } /* Write metadata to file. */ if (nc_enddef(ncid)) ERR; @@ -406,7 +406,7 @@ main(int argc, char **argv) SUMMARIZE_ERR; } /* next test type */ } /* next fill value test run */ - + /* Shut down MPI. */ MPI_Finalize(); diff --git a/nc_test4/tst_strings.c b/nc_test4/tst_strings.c index 176df80c38..301ca6cd79 100644 --- a/nc_test4/tst_strings.c +++ b/nc_test4/tst_strings.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/nc_test4/tst_strings2.c b/nc_test4/tst_strings2.c index f0b7aa2b1c..2edeadebc4 100644 --- a/nc_test4/tst_strings2.c +++ b/nc_test4/tst_strings2.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/nc_test4/tst_sync.c b/nc_test4/tst_sync.c index 3ac8799c3b..30df93fc3c 100644 --- a/nc_test4/tst_sync.c +++ b/nc_test4/tst_sync.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2011 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. diff --git a/nc_test4/tst_types.c b/nc_test4/tst_types.c index 9db571e8bd..d4d82c30f6 100644 --- a/nc_test4/tst_types.c +++ b/nc_test4/tst_types.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf-4 types. @@ -69,8 +69,8 @@ int main(int argc, char *argv[]) unsigned char ubyte_data_out[] = {0,1,2,3,4}; unsigned short ushort_data_out[] = {0,11,22,33,44}; unsigned int uint_data_out[] = {0,111,222,333,3000000000u}; - long long int int64_data_out[] = {0,-111111111,2222222222,-3333333333,444444444}; - unsigned long long int uint64_data_out[] = {0,111111111,2222222222,33333333,44444444}; + long long int int64_data_out[] = {0,-1111111111,222222222,-3333333333LL,444444444LL}; + unsigned long long int uint64_data_out[] = {0,111111111,222222222,33333333,44444444}; /* We will read back in the phoney data with these. */ unsigned char ubyte_data_in[SIZE]; diff --git a/nc_test4/tst_udf.c b/nc_test4/tst_udf.c index c5fc9d2443..ebe5437808 100644 --- a/nc_test4/tst_udf.c +++ b/nc_test4/tst_udf.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005-2007 University +/* This is part of the netCDF package. Copyright 2005-2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. @@ -166,7 +166,7 @@ main(int argc, char **argv) int ncid; NC_Dispatch *disp_in; int i; - + /* Create an empty file to play with. */ if (nc_create(FILE_NAME, 0, &ncid)) ERR; if (nc_close(ncid)) ERR; @@ -180,11 +180,11 @@ main(int argc, char **argv) /* Check that our user-defined format has been added. */ if (nc_inq_user_format(mode[i], &disp_in, NULL)) ERR; if (disp_in != &tst_dispatcher) ERR; - + /* Open file with our defined functions. */ if (nc_open(FILE_NAME, mode[i], &ncid)) ERR; if (nc_close(ncid)) ERR; - + /* Open file again and abort, which is the same as closing it. */ if (nc_open(FILE_NAME, mode[i], &ncid)) ERR; if (nc_inq_format(ncid, NULL) != TEST_VAL_42) ERR; @@ -202,7 +202,7 @@ main(int argc, char **argv) char magic_number_in[NC_MAX_MAGIC_NUMBER_LEN]; FILE *FP; int i; - + /* Create a file with magic number at start. */ if (!(FP = fopen(FILE_NAME, "w"))) ERR; if (fwrite(magic_number, sizeof(char), strlen(magic_number), FP) @@ -210,13 +210,13 @@ main(int argc, char **argv) if (fwrite(dummy_data, sizeof(char), strlen(dummy_data), FP) != strlen(dummy_data)) ERR; if (fclose(FP)) ERR; - + /* Test all available user-defined format slots. */ for (i = 0; i < NUM_UDFS; i++) { /* Add our test user defined format. */ if (nc_def_user_format(mode[i], &tst_dispatcher, magic_number)) ERR; - + /* Check that our user-defined format has been added. */ if (nc_inq_user_format(mode[i], &disp_in, magic_number_in)) ERR; if (disp_in != &tst_dispatcher) ERR; @@ -225,7 +225,7 @@ main(int argc, char **argv) /* Open file with our defined functions. */ if (nc_open(FILE_NAME, mode[i], &ncid)) ERR; if (nc_close(ncid)) ERR; - + /* Open file again and abort, which is the same as closing * it. This time we don't specify a mode, because the magic * number is used to identify the file. */ diff --git a/nc_test4/tst_unlim_vars.c b/nc_test4/tst_unlim_vars.c index 306e53e364..31e559587a 100644 --- a/nc_test4/tst_unlim_vars.c +++ b/nc_test4/tst_unlim_vars.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf-4 variables with unlimited dimensions. diff --git a/nc_test4/tst_utf8.c b/nc_test4/tst_utf8.c index 13da950e9b..86efd49273 100644 --- a/nc_test4/tst_utf8.c +++ b/nc_test4/tst_utf8.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2006 University Corporation for Atmospheric Research/Unidata. + Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. This is a very simple example which writes a netCDF file with diff --git a/nc_test4/tst_utils.c b/nc_test4/tst_utils.c index cf8a83885a..96a16294e8 100644 --- a/nc_test4/tst_utils.c +++ b/nc_test4/tst_utils.c @@ -1,6 +1,17 @@ -/** \internal -\file -Utility functions for tests. */ +/*! \file Utility functions for tests. + +\internal +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + + +*/ + + #include #include diff --git a/nc_test4/tst_v2.c b/nc_test4/tst_v2.c index 0204ce90e3..c012aa51ce 100644 --- a/nc_test4/tst_v2.c +++ b/nc_test4/tst_v2.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test internal netcdf-4 file code. diff --git a/nc_test4/tst_varms.c b/nc_test4/tst_varms.c index 63a3e8e0a4..23990b32fb 100644 --- a/nc_test4/tst_varms.c +++ b/nc_test4/tst_varms.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. diff --git a/nc_test4/tst_vars.c b/nc_test4/tst_vars.c index dfd8502bb5..5ff8b02a73 100644 --- a/nc_test4/tst_vars.c +++ b/nc_test4/tst_vars.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf-4 variables. diff --git a/nc_test4/tst_vars2.c b/nc_test4/tst_vars2.c index 9531427f49..f94c71d75b 100644 --- a/nc_test4/tst_vars2.c +++ b/nc_test4/tst_vars2.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf-4 variables. diff --git a/nc_test4/tst_vars3.c b/nc_test4/tst_vars3.c index 229ae15dfe..c7be6dedf1 100644 --- a/nc_test4/tst_vars3.c +++ b/nc_test4/tst_vars3.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf-4 variables. diff --git a/nc_test4/tst_vars4.c b/nc_test4/tst_vars4.c index 19610a7b29..bb571ea7f2 100644 --- a/nc_test4/tst_vars4.c +++ b/nc_test4/tst_vars4.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test netcdf-4 variables. diff --git a/nc_test4/tst_varsperf.c b/nc_test4/tst_varsperf.c index 3aac8bab49..7a276f2429 100644 --- a/nc_test4/tst_varsperf.c +++ b/nc_test4/tst_varsperf.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + /* Create a netcdf-4 file with a large variable for the purpose @@ -47,11 +58,11 @@ buildfile(void) if(nc_def_dim(ncid,DIM0,(size_t)DIMSIZE0,&dimids[0])) ERR; if(nc_def_dim(ncid,DIM1,(size_t)DIMSIZE1,&dimids[1])) ERR; if(nc_def_var(ncid,VAR,NC_INT,NDIMS,dimids,&varid)) ERR; - + if(nc_enddef(ncid)) ERR; for(p=data,index=0;index #include @@ -42,7 +52,7 @@ main(int argc, char** argv) argc--; argv++; if(argc < 2) - usage(); + usage(); proto = strdup(argv[0]); servlet = strdup(argv[1]); if(argc >= 3) @@ -76,7 +86,7 @@ main(int argc, char** argv) printf("%s",url); fflush(stdout); /* clean up */ - free(serverlist); + free(serverlist); free(url); exit(0); } diff --git a/ncdap_test/nocacheremote3/CMakeLists.txt b/ncdap_test/nocacheremote3/CMakeLists.txt index d46021ec04..5df1d4251b 100644 --- a/ncdap_test/nocacheremote3/CMakeLists.txt +++ b/ncdap_test/nocacheremote3/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) diff --git a/ncdap_test/nocacheremote3/Makefile.am b/ncdap_test/nocacheremote3/Makefile.am index a9c963bae8..691df5cda6 100644 --- a/ncdap_test/nocacheremote3/Makefile.am +++ b/ncdap_test/nocacheremote3/Makefile.am @@ -1,5 +1,5 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2007, see the COPYRIGHT file for more information. +# Copyright 2018, see the COPYRIGHT file for more information. # This is to include the libnc-dap test comparison files diff --git a/ncdap_test/special3/CMakeLists.txt b/ncdap_test/special3/CMakeLists.txt index 2332d8f855..b21e9d53bf 100644 --- a/ncdap_test/special3/CMakeLists.txt +++ b/ncdap_test/special3/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) diff --git a/ncdap_test/t_auth.c b/ncdap_test/t_auth.c index 92c0fc803d..6009426dcc 100644 --- a/ncdap_test/t_auth.c +++ b/ncdap_test/t_auth.c @@ -1,3 +1,13 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ #include "config.h" #include #include @@ -148,7 +158,7 @@ testrc(const char* prefix, const char* url) if(rc == NULL) { fprintf(stderr,"Cannot create ./%s\n",RC); exit(1); - } + } fclose(rc); fillrc(rcpath); retval = nc_open(url, 0, &ncid); diff --git a/ncdap_test/t_dap.c b/ncdap_test/t_dap.c index a73bb6b5a0..5c45e69e7f 100644 --- a/ncdap_test/t_dap.c +++ b/ncdap_test/t_dap.c @@ -1,3 +1,13 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ #include #include #include @@ -120,7 +130,7 @@ int main() /* location of our target url: use file:// to avoid remote server downtime issues */ - + topsrcdir = gettopsrcdir(); url[0] = '\0'; @@ -137,7 +147,7 @@ int main() /* open file, get varid */ CHECK(nc_open(url, NC_NOWRITE, &ncid)); - + /* extract the string case for netcdf-3*/ #ifndef USE_NETCDF4 CHECK(nc_inq_varid(ncid, "s", &varid)); @@ -369,7 +379,7 @@ compare(nc_type t1, nc_type t2, void* v0, void* vdata0, char* tag, default: { printf("unexpected compare: %d %d\n",(int)t1,(int)t2); abort(); - } + } case CASE(NC_CHAR,NC_CHAR): { setup(char); @@ -460,4 +470,3 @@ case CASE(NC_CHAR,NC_STRING):{ } /*switch*/ } - diff --git a/ncdap_test/t_dap3a.c b/ncdap_test/t_dap3a.c index 535579aced..f043e28857 100644 --- a/ncdap_test/t_dap3a.c +++ b/ncdap_test/t_dap3a.c @@ -1,3 +1,13 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ #define NETCDF3ONLY #include #include @@ -120,7 +130,7 @@ int main() /* location of our target url: use file:// to avoid remote server downtime issues */ - + topsrcdir = gettopsrcdir(); url[0] = '\0'; @@ -137,7 +147,7 @@ int main() /* open file, get varid */ CHECK(nc_open(url, NC_NOWRITE, &ncid)); - + /* extract the string case for netcdf-3*/ #ifndef USE_NETCDF4 CHECK(nc_inq_varid(ncid, "s", &varid)); @@ -369,7 +379,7 @@ compare(nc_type t1, nc_type t2, void* v0, void* vdata0, char* tag, default: { printf("unexpected compare: %d %d\n",(int)t1,(int)t2); abort(); - } + } case CASE(NC_CHAR,NC_CHAR): { setup(char); @@ -460,4 +470,3 @@ case CASE(NC_CHAR,NC_STRING):{ } /*switch*/ } - diff --git a/ncdap_test/t_dap3b.c b/ncdap_test/t_dap3b.c index 706f913d3a..36b36abb61 100644 --- a/ncdap_test/t_dap3b.c +++ b/ncdap_test/t_dap3b.c @@ -1,3 +1,13 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ #include "config.h" #include #include diff --git a/ncdap_test/t_dap3c.c b/ncdap_test/t_dap3c.c index 313437b87f..299d7491e7 100644 --- a/ncdap_test/t_dap3c.c +++ b/ncdap_test/t_dap3c.c @@ -1,3 +1,13 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ #include "config.h" #include #include @@ -20,7 +30,7 @@ main() int i32[100]; size_t start[1]; size_t count[1]; - int ok = 1; + int ok = 1; const char* topsrcdir; char url[4096]; diff --git a/ncdap_test/t_misc.c b/ncdap_test/t_misc.c index d613f4e0d2..b158033f58 100644 --- a/ncdap_test/t_misc.c +++ b/ncdap_test/t_misc.c @@ -1,3 +1,13 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ #include "config.h" #include #include @@ -46,7 +56,7 @@ main() svcurl = nc_findtestserver(servlet,0,serverlist); if(svcurl == NULL) { fprintf(stderr,"not found: %s\n",servlet); - exit(1); + exit(1); } snprintf(url,sizeof(url),FURL,svcurl); diff --git a/ncdap_test/t_ncf330.c b/ncdap_test/t_ncf330.c index d68f8202c1..20fac197a4 100644 --- a/ncdap_test/t_ncf330.c +++ b/ncdap_test/t_ncf330.c @@ -1,5 +1,12 @@ /*! Test program for netcdf issue NCF-330 - * + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + * This test was provided by Ellen Johnson at Mathworks and * illustrates an issue currently only seen on Windows. * diff --git a/ncdap_test/t_srcdir.h b/ncdap_test/t_srcdir.h index 30a5b55720..ca1c43424d 100644 --- a/ncdap_test/t_srcdir.h +++ b/ncdap_test/t_srcdir.h @@ -1,3 +1,13 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ #define XSTRINGIFY(s) #s #define STRINGIFY(s) XSTRINGIFY(s) @@ -20,7 +30,7 @@ gettopsrcdir(void) if(topsrcdir == NULL) { fprintf(stderr,"*** FAIL: $abs_top_srcdir not defined\n"); exit(1); - } + } fprintf(stderr,"topsrcdir=%s\n",topsrcdir); return topsrcdir; } diff --git a/ncdap_test/test_cvt.c b/ncdap_test/test_cvt.c index f9bb03f71e..24915c49e8 100644 --- a/ncdap_test/test_cvt.c +++ b/ncdap_test/test_cvt.c @@ -1,3 +1,13 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ #include #include #include @@ -119,7 +129,7 @@ int main() /* location of our target url: use file// to avoid remote server downtime issues */ - + topsrcdir = gettopsrcdir(); url[0] = '\0'; @@ -136,7 +146,7 @@ int main() /* open file, get varid */ CHECK(nc_open(url, NC_NOWRITE, &ncid)); - + /* extract the string case for netcdf-3*/ #ifndef USE_NETCDF4 CHECK(nc_inq_varid(ncid, "s", &varid)); @@ -368,7 +378,7 @@ compare(nc_type t1, nc_type t2, void* v0, void* vdata0, char* tag, default: { printf("unexpected compare: %d %d\n",(int)t1,(int)t2); abort(); - } + } case CASE(NC_CHAR,NC_CHAR): { setup(char); diff --git a/ncdap_test/test_environment.c b/ncdap_test/test_environment.c index 6c2eeb9f8f..e5dbb4d397 100644 --- a/ncdap_test/test_environment.c +++ b/ncdap_test/test_environment.c @@ -1,3 +1,13 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ #include "config.h" #include #include @@ -26,7 +36,7 @@ main(int argc, char** argv) int c = *p; if(c >= 'A' && c <= 'Z') c = ((c - 'A') + 'a'); *p = (char)c; - } + } do { #ifdef TOPSRCDIR if(strcmp(arg,"topsrcdir") == 0) { diff --git a/ncdap_test/test_nstride_cached.c b/ncdap_test/test_nstride_cached.c index 985fb30ca2..d2bc42c8c8 100644 --- a/ncdap_test/test_nstride_cached.c +++ b/ncdap_test/test_nstride_cached.c @@ -1,3 +1,13 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ /* Report from Ansely Manke: I've attached a file with a short c program that diff --git a/ncdap_test/test_partvar.c b/ncdap_test/test_partvar.c index fe2b958086..236afbb3f9 100644 --- a/ncdap_test/test_partvar.c +++ b/ncdap_test/test_partvar.c @@ -1,3 +1,13 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ /* Test part variable fetch code */ @@ -9,7 +19,7 @@ Test part variable fetch code #include "ncdispatch.h" #include "nctestserver.h" -/* The DDS in netcdf classic form is as follows: +/* The DDS in netcdf classic form is as follows: netcdf ingrid { dimensions: ISTA = 35 ; @@ -40,7 +50,7 @@ netcdf ingrid { /* Setup an odometer */ typedef struct Odom { int rank; - size_t* index; + size_t* index; size_t* stop; size_t* start; size_t* count; @@ -85,7 +95,7 @@ void dump(float* source, size_t start, size_t count) if((i % 6) == 5) printf("\n"); } printf("\n"); -#endif +#endif } int @@ -136,7 +146,7 @@ main() #ifdef DEBUG dump((float*)targetpart,0,ISTA*IZ); -#endif +#endif /* validate the part var */ if(!check(targetpart,start0,count0)) goto fail; @@ -156,7 +166,7 @@ subslice(int rank, size_t* count, int startdim) { int i; size_t offset = 1; - for(i=startdim;irank == 0) return 0; + if(odom->rank == 0) return 0; for(i=odom->rank-1;i>=0;i--) { odom->index[i]++; if(odom->index[i] < odom->stop[i]) break; @@ -250,282 +260,282 @@ odom_count(Odom* odom) for(i=0;irank;i++) { offset *= odom->count[i]; offset += odom->index[i]; - } + } return offset; } /* Capture the complete set of data */ static float target_content[ISTA*IZ] = { - 0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, 0.059964, - 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, 0.1197122, - 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, 0.1790296, - 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, 0.2377026, - 0.247404, 0.2570806, 0.2667314, 0.2763557, 0.2859522, 0.2955202, - 0.3050586, 0.3145666, 0.324043, 0.3334871, 0.3428978, 0.3522742, - 0.3616154, 0.3709205, 0.3801884, 0.3894183, 0.3986093, 0.4077604, + 0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, 0.059964, + 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, 0.1197122, + 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, 0.1790296, + 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, 0.2377026, + 0.247404, 0.2570806, 0.2667314, 0.2763557, 0.2859522, 0.2955202, + 0.3050586, 0.3145666, 0.324043, 0.3334871, 0.3428978, 0.3522742, + 0.3616154, 0.3709205, 0.3801884, 0.3894183, 0.3986093, 0.4077604, 0.4168708, - 0.4259395, 0.4349655, 0.4439481, 0.4528863, 0.4617792, 0.4706259, - 0.4794255, 0.4881772, 0.4968801, 0.5055333, 0.514136, 0.5226873, - 0.5311862, 0.539632, 0.5480239, 0.556361, 0.5646425, 0.5728675, - 0.5810351, 0.5891448, 0.5971954, 0.6051864, 0.6131169, 0.620986, - 0.628793, 0.6365372, 0.6442177, 0.6518338, 0.6593847, 0.6668696, - 0.6742879, 0.6816388, 0.6889215, 0.6961352, 0.7032794, 0.7103533, - 0.7173561, 0.7242872, 0.7311459, 0.7379314, 0.7446431, 0.7512804, + 0.4259395, 0.4349655, 0.4439481, 0.4528863, 0.4617792, 0.4706259, + 0.4794255, 0.4881772, 0.4968801, 0.5055333, 0.514136, 0.5226873, + 0.5311862, 0.539632, 0.5480239, 0.556361, 0.5646425, 0.5728675, + 0.5810351, 0.5891448, 0.5971954, 0.6051864, 0.6131169, 0.620986, + 0.628793, 0.6365372, 0.6442177, 0.6518338, 0.6593847, 0.6668696, + 0.6742879, 0.6816388, 0.6889215, 0.6961352, 0.7032794, 0.7103533, + 0.7173561, 0.7242872, 0.7311459, 0.7379314, 0.7446431, 0.7512804, 0.7578425, 0.764329, - 0.7707389, 0.7770718, 0.7833269, 0.7895038, 0.7956016, 0.8016199, - 0.8075581, 0.8134155, 0.8191916, 0.8248857, 0.8304974, 0.836026, - 0.841471, 0.8468319, 0.852108, 0.857299, 0.8624042, 0.8674232, 0.8723555, - 0.8772005, 0.8819578, 0.8866269, 0.8912073, 0.8956987, 0.9001005, - 0.9044122, 0.9086335, 0.912764, 0.9168031, 0.9207506, 0.924606, 0.928369, - 0.9320391, 0.935616, 0.9390994, 0.9424888, 0.945784, 0.9489846, + 0.7707389, 0.7770718, 0.7833269, 0.7895038, 0.7956016, 0.8016199, + 0.8075581, 0.8134155, 0.8191916, 0.8248857, 0.8304974, 0.836026, + 0.841471, 0.8468319, 0.852108, 0.857299, 0.8624042, 0.8674232, 0.8723555, + 0.8772005, 0.8819578, 0.8866269, 0.8912073, 0.8956987, 0.9001005, + 0.9044122, 0.9086335, 0.912764, 0.9168031, 0.9207506, 0.924606, 0.928369, + 0.9320391, 0.935616, 0.9390994, 0.9424888, 0.945784, 0.9489846, 0.9520903, 0.9551008, 0.9580159, 0.960835, 0.9635582, 0.966185, - 0.9687151, 0.9711484, 0.9734845, 0.9757234, 0.9778646, 0.979908, 0.9818535, - 0.9837008, 0.9854497, 0.9871001, 0.9886518, 0.9901046, 0.9914584, - 0.992713, 0.9938684, 0.9949244, 0.9958808, 0.9967378, 0.997495, - 0.9981525, 0.9987102, 0.9991679, 0.9995258, 0.9997838, 0.9999417, - 0.9999997, 0.9999576, 0.9998156, 0.9995736, 0.9992316, 0.9987897, - 0.998248, 0.9976064, 0.996865, 0.996024, 0.9950833, 0.9940432, 0.9929036, + 0.9687151, 0.9711484, 0.9734845, 0.9757234, 0.9778646, 0.979908, 0.9818535, + 0.9837008, 0.9854497, 0.9871001, 0.9886518, 0.9901046, 0.9914584, + 0.992713, 0.9938684, 0.9949244, 0.9958808, 0.9967378, 0.997495, + 0.9981525, 0.9987102, 0.9991679, 0.9995258, 0.9997838, 0.9999417, + 0.9999997, 0.9999576, 0.9998156, 0.9995736, 0.9992316, 0.9987897, + 0.998248, 0.9976064, 0.996865, 0.996024, 0.9950833, 0.9940432, 0.9929036, 0.9916648, 0.9903268, 0.9888898, 0.9873539, 0.9857192, 0.983986, - 0.9821543, 0.9802245, 0.9781966, 0.9760709, 0.9738476, 0.971527, 0.9691091, - 0.9665944, 0.963983, 0.9612752, 0.9584713, 0.9555715, 0.9525762, - 0.9494856, 0.9463001, 0.9430199, 0.9396455, 0.9361771, 0.932615, - 0.9289597, 0.9252115, 0.9213708, 0.917438, 0.9134133, 0.9092974, - 0.9050906, 0.9007932, 0.8964058, 0.8919287, 0.8873624, 0.8827074, - 0.8779641, 0.873133, 0.8682146, 0.8632094, 0.8581178, 0.8529405, + 0.9821543, 0.9802245, 0.9781966, 0.9760709, 0.9738476, 0.971527, 0.9691091, + 0.9665944, 0.963983, 0.9612752, 0.9584713, 0.9555715, 0.9525762, + 0.9494856, 0.9463001, 0.9430199, 0.9396455, 0.9361771, 0.932615, + 0.9289597, 0.9252115, 0.9213708, 0.917438, 0.9134133, 0.9092974, + 0.9050906, 0.9007932, 0.8964058, 0.8919287, 0.8873624, 0.8827074, + 0.8779641, 0.873133, 0.8682146, 0.8632094, 0.8581178, 0.8529405, 0.8476778, 0.8423305, 0.8368988, 0.8313835, 0.825785, 0.8201039, 0.8143409, - 0.8084964, 0.8025711, 0.7965655, 0.7904802, 0.7843159, 0.7780732, - 0.7717527, 0.7653549, 0.7588807, 0.7523306, 0.7457052, 0.7390053, - 0.7322314, 0.7253844, 0.7184648, 0.7114733, 0.7044108, 0.6972777, - 0.690075, 0.6828032, 0.6754632, 0.6680556, 0.6605812, 0.6530408, - 0.645435, 0.6377647, 0.6300306, 0.6222336, 0.6143743, 0.6064535, - 0.5984721, 0.5904309, 0.5823306, 0.5741721, 0.5659562, 0.5576837, - 0.5493554, 0.5409722, 0.5325349, 0.5240443, 0.5155014, 0.5069069, + 0.8084964, 0.8025711, 0.7965655, 0.7904802, 0.7843159, 0.7780732, + 0.7717527, 0.7653549, 0.7588807, 0.7523306, 0.7457052, 0.7390053, + 0.7322314, 0.7253844, 0.7184648, 0.7114733, 0.7044108, 0.6972777, + 0.690075, 0.6828032, 0.6754632, 0.6680556, 0.6605812, 0.6530408, + 0.645435, 0.6377647, 0.6300306, 0.6222336, 0.6143743, 0.6064535, + 0.5984721, 0.5904309, 0.5823306, 0.5741721, 0.5659562, 0.5576837, + 0.5493554, 0.5409722, 0.5325349, 0.5240443, 0.5155014, 0.5069069, 0.4982616, 0.4895666, - 0.4808226, 0.4720306, 0.4631913, 0.4543057, 0.4453746, 0.4363991, - 0.4273799, 0.4183179, 0.4092142, 0.4000695, 0.3908848, 0.381661, - 0.372399, 0.3630998, 0.3537644, 0.3443935, 0.3349881, 0.3255493, - 0.316078, 0.306575, 0.2970414, 0.287478, 0.2778859, 0.2682661, 0.2586193, - 0.2489468, 0.2392493, 0.229528, 0.2197836, 0.2100173, 0.20023, 0.1904227, - 0.1805963, 0.1707518, 0.1608903, 0.1510127, 0.14112, 0.1312132, + 0.4808226, 0.4720306, 0.4631913, 0.4543057, 0.4453746, 0.4363991, + 0.4273799, 0.4183179, 0.4092142, 0.4000695, 0.3908848, 0.381661, + 0.372399, 0.3630998, 0.3537644, 0.3443935, 0.3349881, 0.3255493, + 0.316078, 0.306575, 0.2970414, 0.287478, 0.2778859, 0.2682661, 0.2586193, + 0.2489468, 0.2392493, 0.229528, 0.2197836, 0.2100173, 0.20023, 0.1904227, + 0.1805963, 0.1707518, 0.1608903, 0.1510127, 0.14112, 0.1312132, 0.1212933, 0.1113612, 0.101418, 0.09146464, 0.08150215, 0.07153151, - 0.06155372, 0.05156977, 0.04158066, 0.0315874, 0.02159098, 0.01159239, - 0.001592653, -0.008407247, -0.01840631, -0.02840353, -0.0383979, - -0.04838844, -0.05837414, -0.068354, -0.07832703, -0.08829223, - -0.09824859, -0.1081951, -0.1181309, -0.1280548, -0.1379659, -0.1478632, - -0.1577457, -0.1676124, -0.1774624, -0.1872947, -0.1971082, -0.206902, - -0.2166751, -0.2264265, -0.2361553, -0.2458605, -0.2555411, -0.2651961, - -0.2748247, -0.2844257, -0.2939983, -0.3035415, -0.3130544, -0.3225359, + 0.06155372, 0.05156977, 0.04158066, 0.0315874, 0.02159098, 0.01159239, + 0.001592653, -0.008407247, -0.01840631, -0.02840353, -0.0383979, + -0.04838844, -0.05837414, -0.068354, -0.07832703, -0.08829223, + -0.09824859, -0.1081951, -0.1181309, -0.1280548, -0.1379659, -0.1478632, + -0.1577457, -0.1676124, -0.1774624, -0.1872947, -0.1971082, -0.206902, + -0.2166751, -0.2264265, -0.2361553, -0.2458605, -0.2555411, -0.2651961, + -0.2748247, -0.2844257, -0.2939983, -0.3035415, -0.3130544, -0.3225359, -0.3319852, -0.3414013, -0.3507832, -0.3601301, - -0.369441, -0.3787149, -0.3879509, -0.3971482, -0.4063057, -0.4154226, - -0.424498, -0.4335309, -0.4425204, -0.4514658, -0.4603659, -0.46922, - -0.4780273, -0.4867867, -0.4954974, -0.5041586, -0.5127693, -0.5213288, - -0.5298361, -0.5382905, -0.5466911, -0.5550369, -0.5633273, -0.5715613, - -0.5797382, -0.5878571, -0.5959172, -0.6039178, -0.6118579, -0.6197369, - -0.6275538, -0.635308, -0.6429988, -0.6506251, -0.6581865, -0.665682, - -0.673111, -0.6804726, -0.6877661, -0.694991, -0.7021463, -0.7092314, + -0.369441, -0.3787149, -0.3879509, -0.3971482, -0.4063057, -0.4154226, + -0.424498, -0.4335309, -0.4425204, -0.4514658, -0.4603659, -0.46922, + -0.4780273, -0.4867867, -0.4954974, -0.5041586, -0.5127693, -0.5213288, + -0.5298361, -0.5382905, -0.5466911, -0.5550369, -0.5633273, -0.5715613, + -0.5797382, -0.5878571, -0.5959172, -0.6039178, -0.6118579, -0.6197369, + -0.6275538, -0.635308, -0.6429988, -0.6506251, -0.6581865, -0.665682, + -0.673111, -0.6804726, -0.6877661, -0.694991, -0.7021463, -0.7092314, -0.7162456, -0.7231881, - -0.7300584, -0.7368556, -0.7435791, -0.7502283, -0.7568025, -0.763301, - -0.7697231, -0.7760683, -0.7823359, -0.7885253, -0.7946358, -0.8006668, - -0.8066177, -0.8124881, -0.8182771, -0.8239843, -0.8296092, -0.835151, - -0.8406094, -0.8459837, -0.8512734, -0.856478, -0.8615969, -0.8666297, - -0.8715758, -0.8764347, -0.881206, -0.8858892, -0.8904838, -0.8949894, - -0.8994054, -0.9037315, -0.9079673, -0.9121122, -0.9161659, -0.920128, - -0.9239982, -0.9277759, -0.9314608, -0.9350526, -0.9385508, -0.9419553, + -0.7300584, -0.7368556, -0.7435791, -0.7502283, -0.7568025, -0.763301, + -0.7697231, -0.7760683, -0.7823359, -0.7885253, -0.7946358, -0.8006668, + -0.8066177, -0.8124881, -0.8182771, -0.8239843, -0.8296092, -0.835151, + -0.8406094, -0.8459837, -0.8512734, -0.856478, -0.8615969, -0.8666297, + -0.8715758, -0.8764347, -0.881206, -0.8858892, -0.8904838, -0.8949894, + -0.8994054, -0.9037315, -0.9079673, -0.9121122, -0.9161659, -0.920128, + -0.9239982, -0.9277759, -0.9314608, -0.9350526, -0.9385508, -0.9419553, -0.9452655, -0.9484812, - -0.9516021, -0.9546278, -0.957558, -0.9603925, -0.963131, -0.965773, - -0.9683186, -0.9707673, -0.973119, -0.9753733, -0.9775301, -0.9795892, - -0.9815503, -0.9834132, -0.9851778, -0.9868439, -0.9884112, -0.9898798, - -0.9912494, -0.9925198, -0.993691, -0.9947628, -0.9957352, -0.996608, - -0.9973811, -0.9980544, -0.998628, -0.9991017, -0.9994755, -0.9997494, - -0.9999232, -0.9999971, -0.999971, -0.9998449, -0.9996188, -0.9992928, - -0.9988668, -0.998341, -0.9977152, -0.9969898, -0.9961646, -0.9952399, + -0.9516021, -0.9546278, -0.957558, -0.9603925, -0.963131, -0.965773, + -0.9683186, -0.9707673, -0.973119, -0.9753733, -0.9775301, -0.9795892, + -0.9815503, -0.9834132, -0.9851778, -0.9868439, -0.9884112, -0.9898798, + -0.9912494, -0.9925198, -0.993691, -0.9947628, -0.9957352, -0.996608, + -0.9973811, -0.9980544, -0.998628, -0.9991017, -0.9994755, -0.9997494, + -0.9999232, -0.9999971, -0.999971, -0.9998449, -0.9996188, -0.9992928, + -0.9988668, -0.998341, -0.9977152, -0.9969898, -0.9961646, -0.9952399, -0.9942155, -0.9930918, - -0.9918687, -0.9905465, -0.9891253, -0.9876051, -0.9859861, -0.9842686, - -0.9824526, -0.9805384, -0.9785261, -0.976416, -0.9742082, -0.9719031, - -0.9695007, -0.9670014, -0.9644054, -0.9617129, -0.9589243, -0.9560397, - -0.9530596, -0.9499842, -0.9468138, -0.9435487, -0.9401892, -0.9367357, - -0.9331886, -0.9295481, -0.9258147, -0.9219887, -0.9180705, -0.9140605, - -0.9099591, -0.9057667, -0.9014837, -0.8971105, -0.8926477, -0.8880956, - -0.8834547, -0.8787254, -0.8739083, -0.8690037, -0.8640123, -0.8589345, + -0.9918687, -0.9905465, -0.9891253, -0.9876051, -0.9859861, -0.9842686, + -0.9824526, -0.9805384, -0.9785261, -0.976416, -0.9742082, -0.9719031, + -0.9695007, -0.9670014, -0.9644054, -0.9617129, -0.9589243, -0.9560397, + -0.9530596, -0.9499842, -0.9468138, -0.9435487, -0.9401892, -0.9367357, + -0.9331886, -0.9295481, -0.9258147, -0.9219887, -0.9180705, -0.9140605, + -0.9099591, -0.9057667, -0.9014837, -0.8971105, -0.8926477, -0.8880956, + -0.8834547, -0.8787254, -0.8739083, -0.8690037, -0.8640123, -0.8589345, -0.8537708, -0.8485217, - -0.8431877, -0.8377695, -0.8322675, -0.8266822, -0.8210142, -0.8152642, - -0.8094327, -0.8035201, -0.7975273, -0.7914547, -0.7853029, -0.7790727, - -0.7727645, -0.766379, -0.7599169, -0.7533789, -0.7467654, -0.7400773, - -0.7333152, -0.7264798, -0.7195717, -0.7125916, -0.7055403, -0.6984185, - -0.6912268, -0.683966, -0.6766368, -0.6692399, -0.6617761, -0.6542461, - -0.6466507, -0.6389906, -0.6312667, -0.6234795, -0.6156301, -0.6077191, - -0.5997473, -0.5917156, -0.5836247, -0.5754754, -0.5672686, -0.559005, + -0.8431877, -0.8377695, -0.8322675, -0.8266822, -0.8210142, -0.8152642, + -0.8094327, -0.8035201, -0.7975273, -0.7914547, -0.7853029, -0.7790727, + -0.7727645, -0.766379, -0.7599169, -0.7533789, -0.7467654, -0.7400773, + -0.7333152, -0.7264798, -0.7195717, -0.7125916, -0.7055403, -0.6984185, + -0.6912268, -0.683966, -0.6766368, -0.6692399, -0.6617761, -0.6542461, + -0.6466507, -0.6389906, -0.6312667, -0.6234795, -0.6156301, -0.6077191, + -0.5997473, -0.5917156, -0.5836247, -0.5754754, -0.5672686, -0.559005, -0.5506855, -0.542311, - -0.5338823, -0.5254001, -0.5168654, -0.5082791, -0.4996419, -0.4909547, - -0.4822185, -0.473434, -0.4646022, -0.4557239, -0.4468001, -0.4378315, - -0.4288192, -0.419764, -0.4106669, -0.4015286, -0.3923502, -0.3831326, - -0.3738767, -0.3645833, -0.3552535, -0.3458883, -0.3364884, -0.3270548, - -0.3175886, -0.3080906, -0.2985618, -0.2890031, -0.2794155, -0.2698, - -0.2601575, -0.250489, -0.2407954, -0.2310778, -0.2213371, -0.2115742, - -0.2017901, -0.1919859, -0.1821625, -0.1723209, -0.162462, -0.1525869, + -0.5338823, -0.5254001, -0.5168654, -0.5082791, -0.4996419, -0.4909547, + -0.4822185, -0.473434, -0.4646022, -0.4557239, -0.4468001, -0.4378315, + -0.4288192, -0.419764, -0.4106669, -0.4015286, -0.3923502, -0.3831326, + -0.3738767, -0.3645833, -0.3552535, -0.3458883, -0.3364884, -0.3270548, + -0.3175886, -0.3080906, -0.2985618, -0.2890031, -0.2794155, -0.2698, + -0.2601575, -0.250489, -0.2407954, -0.2310778, -0.2213371, -0.2115742, + -0.2017901, -0.1919859, -0.1821625, -0.1723209, -0.162462, -0.1525869, -0.1426965, -0.1327919, - -0.122874, -0.1129438, -0.1030023, -0.0930505, -0.0830894, -0.07311999, - -0.06314328, -0.05316024, -0.04317189, -0.03317922, -0.02318323, - -0.01318493, -0.003185302, 0.00681464, 0.0168139, 0.02681148, 0.03680638, - 0.0467976, 0.05678413, 0.06676499, 0.07673918, 0.08670568, 0.09666352, - 0.1066117, 0.1165492, 0.1264751, 0.1363883, 0.1462878, 0.1561728, - 0.1660421, 0.1758948, 0.18573, 0.1955465, 0.2053435, 0.21512, 0.2248749, - 0.2346074, 0.2443164, 0.254001, 0.2636602, 0.273293, 0.2828985, + -0.122874, -0.1129438, -0.1030023, -0.0930505, -0.0830894, -0.07311999, + -0.06314328, -0.05316024, -0.04317189, -0.03317922, -0.02318323, + -0.01318493, -0.003185302, 0.00681464, 0.0168139, 0.02681148, 0.03680638, + 0.0467976, 0.05678413, 0.06676499, 0.07673918, 0.08670568, 0.09666352, + 0.1066117, 0.1165492, 0.1264751, 0.1363883, 0.1462878, 0.1561728, + 0.1660421, 0.1758948, 0.18573, 0.1955465, 0.2053435, 0.21512, 0.2248749, + 0.2346074, 0.2443164, 0.254001, 0.2636602, 0.273293, 0.2828985, 0.2924757, 0.3020236, - 0.3115413, 0.321028, 0.3304825, 0.3399039, 0.3492913, 0.3586439, 0.3679605, - 0.3772404, 0.3864825, 0.395686, 0.4048499, 0.4139734, 0.4230554, - 0.4320951, 0.4410917, 0.4500441, 0.4589515, 0.467813, 0.4766277, - 0.4853948, 0.4941134, 0.5027825, 0.5114013, 0.519969, 0.5284848, - 0.5369476, 0.5453568, 0.5537114, 0.5620106, 0.5702537, 0.5784398, - 0.5865679, 0.5946375, 0.6026475, 0.6105974, 0.6184861, 0.626313, - 0.6340773, 0.6417782, 0.6494148, 0.6569866, 0.6644927, 0.6719322, + 0.3115413, 0.321028, 0.3304825, 0.3399039, 0.3492913, 0.3586439, 0.3679605, + 0.3772404, 0.3864825, 0.395686, 0.4048499, 0.4139734, 0.4230554, + 0.4320951, 0.4410917, 0.4500441, 0.4589515, 0.467813, 0.4766277, + 0.4853948, 0.4941134, 0.5027825, 0.5114013, 0.519969, 0.5284848, + 0.5369476, 0.5453568, 0.5537114, 0.5620106, 0.5702537, 0.5784398, + 0.5865679, 0.5946375, 0.6026475, 0.6105974, 0.6184861, 0.626313, + 0.6340773, 0.6417782, 0.6494148, 0.6569866, 0.6644927, 0.6719322, 0.6793047, - 0.6866091, 0.693845, 0.7010114, 0.7081077, 0.7151332, 0.7220873, 0.728969, - 0.735778, 0.7425133, 0.7491744, 0.7557605, 0.7622711, 0.7687054, - 0.7750629, 0.7813429, 0.7875448, 0.7936679, 0.7997116, 0.8056753, - 0.8115585, 0.8173606, 0.8230809, 0.8287189, 0.834274, 0.8397457, - 0.8451334, 0.8504366, 0.8556548, 0.8607874, 0.8658339, 0.8707939, - 0.8756667, 0.880452, 0.8851492, 0.889758, 0.8942778, 0.8987081, - 0.9030486, 0.9072987, 0.9114581, 0.9155264, 0.9195032, 0.9233879, + 0.6866091, 0.693845, 0.7010114, 0.7081077, 0.7151332, 0.7220873, 0.728969, + 0.735778, 0.7425133, 0.7491744, 0.7557605, 0.7622711, 0.7687054, + 0.7750629, 0.7813429, 0.7875448, 0.7936679, 0.7997116, 0.8056753, + 0.8115585, 0.8173606, 0.8230809, 0.8287189, 0.834274, 0.8397457, + 0.8451334, 0.8504366, 0.8556548, 0.8607874, 0.8658339, 0.8707939, + 0.8756667, 0.880452, 0.8851492, 0.889758, 0.8942778, 0.8987081, + 0.9030486, 0.9072987, 0.9114581, 0.9155264, 0.9195032, 0.9233879, 0.9271804, - 0.9308801, 0.9344868, 0.938, 0.9414194, 0.9447446, 0.9479754, 0.9511114, - 0.9541523, 0.9570977, 0.9599475, 0.9627013, 0.9653587, 0.9679196, - 0.9703838, 0.972751, 0.9750208, 0.9771932, 0.9792678, 0.9812445, - 0.9831231, 0.9849033, 0.9865851, 0.9881682, 0.9896525, 0.9910379, - 0.9923241, 0.9935111, 0.9945988, 0.995587, 0.9964756, 0.9972646, - 0.9979539, 0.9985433, 0.999033, 0.9994227, 0.9997125, 0.9999022, - 0.9999921, 0.9999819, 0.9998717, 0.9996616, 0.9993514, 0.9989414, + 0.9308801, 0.9344868, 0.938, 0.9414194, 0.9447446, 0.9479754, 0.9511114, + 0.9541523, 0.9570977, 0.9599475, 0.9627013, 0.9653587, 0.9679196, + 0.9703838, 0.972751, 0.9750208, 0.9771932, 0.9792678, 0.9812445, + 0.9831231, 0.9849033, 0.9865851, 0.9881682, 0.9896525, 0.9910379, + 0.9923241, 0.9935111, 0.9945988, 0.995587, 0.9964756, 0.9972646, + 0.9979539, 0.9985433, 0.999033, 0.9994227, 0.9997125, 0.9999022, + 0.9999921, 0.9999819, 0.9998717, 0.9996616, 0.9993514, 0.9989414, 0.9984314, - 0.9978216, 0.997112, 0.9963027, 0.9953938, 0.9943853, 0.9932774, 0.9920702, - 0.9907638, 0.9893582, 0.9878538, 0.9862506, 0.9845487, 0.9827484, - 0.9808499, 0.9788532, 0.9767586, 0.9745664, 0.9722767, 0.9698898, - 0.9674059, 0.9648253, 0.9621482, 0.9593748, 0.9565055, 0.9535406, - 0.9504804, 0.9473251, 0.944075, 0.9407306, 0.937292, 0.9337597, - 0.9301341, 0.9264155, 0.9226042, 0.9187007, 0.9147053, 0.9106184, + 0.9978216, 0.997112, 0.9963027, 0.9953938, 0.9943853, 0.9932774, 0.9920702, + 0.9907638, 0.9893582, 0.9878538, 0.9862506, 0.9845487, 0.9827484, + 0.9808499, 0.9788532, 0.9767586, 0.9745664, 0.9722767, 0.9698898, + 0.9674059, 0.9648253, 0.9621482, 0.9593748, 0.9565055, 0.9535406, + 0.9504804, 0.9473251, 0.944075, 0.9407306, 0.937292, 0.9337597, + 0.9301341, 0.9264155, 0.9226042, 0.9187007, 0.9147053, 0.9106184, 0.9064404, 0.9021719, 0.897813, 0.8933644, 0.8888265, 0.8841997, 0.8794845, - 0.8746814, 0.8697907, 0.8648131, 0.859749, 0.8545989, 0.8493634, 0.8440429, - 0.8386381, 0.8331493, 0.8275773, 0.8219225, 0.8161855, 0.8103669, - 0.8044672, 0.7984871, 0.7924272, 0.786288, 0.7800702, 0.7737743, - 0.7674012, 0.7609512, 0.7544252, 0.7478237, 0.7411475, 0.7343971, - 0.7275733, 0.7206767, 0.7137081, 0.7066681, 0.6995574, 0.6923768, - 0.685127, 0.6778086, 0.6704224, 0.6629692, 0.6554497, 0.6478647, + 0.8746814, 0.8697907, 0.8648131, 0.859749, 0.8545989, 0.8493634, 0.8440429, + 0.8386381, 0.8331493, 0.8275773, 0.8219225, 0.8161855, 0.8103669, + 0.8044672, 0.7984871, 0.7924272, 0.786288, 0.7800702, 0.7737743, + 0.7674012, 0.7609512, 0.7544252, 0.7478237, 0.7411475, 0.7343971, + 0.7275733, 0.7206767, 0.7137081, 0.7066681, 0.6995574, 0.6923768, + 0.685127, 0.6778086, 0.6704224, 0.6629692, 0.6554497, 0.6478647, 0.6402149, 0.6325011, 0.624724, 0.6168844, 0.6089832, 0.601021, 0.5929987, - 0.5849172, 0.5767772, 0.5685794, 0.5603248, 0.5520142, 0.5436484, - 0.5352283, 0.5267546, 0.5182282, 0.50965, 0.5010208, 0.4923416, - 0.4836131, 0.4748363, 0.4660119, 0.457141, 0.4482243, 0.4392629, - 0.4302575, 0.421209, 0.4121185, 0.4029867, 0.3938147, 0.3846032, - 0.3753533, 0.3660659, 0.3567419, 0.3473822, 0.3379877, 0.3285595, - 0.3190984, 0.3096054, 0.3000814, 0.2905274, 0.2809443, 0.2713332, - 0.261695, 0.2520306, 0.2423409, 0.232627, 0.2228899, 0.2131305, + 0.5849172, 0.5767772, 0.5685794, 0.5603248, 0.5520142, 0.5436484, + 0.5352283, 0.5267546, 0.5182282, 0.50965, 0.5010208, 0.4923416, + 0.4836131, 0.4748363, 0.4660119, 0.457141, 0.4482243, 0.4392629, + 0.4302575, 0.421209, 0.4121185, 0.4029867, 0.3938147, 0.3846032, + 0.3753533, 0.3660659, 0.3567419, 0.3473822, 0.3379877, 0.3285595, + 0.3190984, 0.3096054, 0.3000814, 0.2905274, 0.2809443, 0.2713332, + 0.261695, 0.2520306, 0.2423409, 0.232627, 0.2228899, 0.2131305, 0.2033498, 0.1935487, - 0.1837283, 0.1738895, 0.1640333, 0.1541607, 0.1442727, 0.1343703, - 0.1244544, 0.1145261, 0.1045863, 0.09463613, 0.08467644, 0.07470829, - 0.06473266, 0.05475057, 0.044763, 0.03477095, 0.02477542, 0.01477742, - 0.004777943, -0.005222016, -0.01522145, -0.02521937, -0.03521476, - -0.04520663, -0.05519398, -0.06517581, -0.07515112, -0.08511892, - -0.09507821, -0.105028, -0.1149673, -0.124895, -0.1348103, -0.1447121, - -0.1545995, -0.1644713, -0.1743268, -0.1841648, -0.1939844, -0.2037845, + 0.1837283, 0.1738895, 0.1640333, 0.1541607, 0.1442727, 0.1343703, + 0.1244544, 0.1145261, 0.1045863, 0.09463613, 0.08467644, 0.07470829, + 0.06473266, 0.05475057, 0.044763, 0.03477095, 0.02477542, 0.01477742, + 0.004777943, -0.005222016, -0.01522145, -0.02521937, -0.03521476, + -0.04520663, -0.05519398, -0.06517581, -0.07515112, -0.08511892, + -0.09507821, -0.105028, -0.1149673, -0.124895, -0.1348103, -0.1447121, + -0.1545995, -0.1644713, -0.1743268, -0.1841648, -0.1939844, -0.2037845, -0.2135644, -0.2233228, -0.2330589, -0.2427717, - -0.2524603, -0.2621236, -0.2717606, -0.2813705, -0.2909523, -0.300505, - -0.3100276, -0.3195192, -0.3289789, -0.3384056, -0.3477986, -0.3571567, - -0.3664791, -0.3757649, -0.3850131, -0.3942228, -0.4033931, -0.4125231, - -0.4216118, -0.4306583, -0.4396617, -0.4486212, -0.4575359, -0.4664048, - -0.475227, -0.4840018, -0.4927281, -0.5014051, -0.5100321, -0.518608, - -0.527132, -0.5356033, -0.5440211, -0.5523845, -0.5606926, -0.5689447, - -0.5771399, -0.5852773, -0.5933563, -0.6013759, -0.6093353, -0.6172339, + -0.2524603, -0.2621236, -0.2717606, -0.2813705, -0.2909523, -0.300505, + -0.3100276, -0.3195192, -0.3289789, -0.3384056, -0.3477986, -0.3571567, + -0.3664791, -0.3757649, -0.3850131, -0.3942228, -0.4033931, -0.4125231, + -0.4216118, -0.4306583, -0.4396617, -0.4486212, -0.4575359, -0.4664048, + -0.475227, -0.4840018, -0.4927281, -0.5014051, -0.5100321, -0.518608, + -0.527132, -0.5356033, -0.5440211, -0.5523845, -0.5606926, -0.5689447, + -0.5771399, -0.5852773, -0.5933563, -0.6013759, -0.6093353, -0.6172339, -0.6250706, -0.6328449, - -0.640556, -0.6482029, -0.6557851, -0.6633016, -0.6707519, -0.678135, - -0.6854504, -0.6926972, -0.6998747, -0.7069823, -0.7140191, -0.7209845, - -0.7278779, -0.7346984, -0.7414455, -0.7481185, -0.7547166, -0.7612393, - -0.7676858, -0.7740556, -0.7803479, -0.7865623, -0.792698, -0.7987544, - -0.8047309, -0.810627, -0.816442, -0.8221753, -0.8278264, -0.8333948, - -0.8388798, -0.844281, -0.8495977, -0.8548294, -0.8599757, -0.865036, - -0.8700097, -0.8748965, -0.8796958, -0.884407, -0.8890299, -0.8935639, + -0.640556, -0.6482029, -0.6557851, -0.6633016, -0.6707519, -0.678135, + -0.6854504, -0.6926972, -0.6998747, -0.7069823, -0.7140191, -0.7209845, + -0.7278779, -0.7346984, -0.7414455, -0.7481185, -0.7547166, -0.7612393, + -0.7676858, -0.7740556, -0.7803479, -0.7865623, -0.792698, -0.7987544, + -0.8047309, -0.810627, -0.816442, -0.8221753, -0.8278264, -0.8333948, + -0.8388798, -0.844281, -0.8495977, -0.8548294, -0.8599757, -0.865036, + -0.8700097, -0.8748965, -0.8796958, -0.884407, -0.8890299, -0.8935639, -0.8980085, -0.9023633, - -0.9066279, -0.9108018, -0.9148846, -0.918876, -0.9227754, -0.9265826, - -0.9302971, -0.9339186, -0.9374467, -0.9408811, -0.9442213, -0.9474672, - -0.9506183, -0.9536743, -0.956635, -0.9595, -0.9622691, -0.9649419, - -0.9675183, -0.9699979, -0.9723805, -0.9746658, -0.9768537, -0.9789439, - -0.9809362, -0.9828305, -0.9846264, -0.9863239, -0.9879227, -0.9894227, - -0.9908239, -0.9921259, -0.9933288, -0.9944322, -0.9954363, -0.9963408, - -0.9971456, -0.9978508, -0.9984561, -0.9989617, -0.9993673, -0.999673, + -0.9066279, -0.9108018, -0.9148846, -0.918876, -0.9227754, -0.9265826, + -0.9302971, -0.9339186, -0.9374467, -0.9408811, -0.9442213, -0.9474672, + -0.9506183, -0.9536743, -0.956635, -0.9595, -0.9622691, -0.9649419, + -0.9675183, -0.9699979, -0.9723805, -0.9746658, -0.9768537, -0.9789439, + -0.9809362, -0.9828305, -0.9846264, -0.9863239, -0.9879227, -0.9894227, + -0.9908239, -0.9921259, -0.9933288, -0.9944322, -0.9954363, -0.9963408, + -0.9971456, -0.9978508, -0.9984561, -0.9989617, -0.9993673, -0.999673, -0.9998787, -0.9999844, - -0.9999902, -0.9998959, -0.9997017, -0.9994075, -0.9990134, -0.9985193, - -0.9979254, -0.9972317, -0.9964383, -0.9955452, -0.9945526, -0.9934605, - -0.9922691, -0.9909785, -0.9895887, -0.9881001, -0.9865125, -0.9848264, - -0.9830417, -0.9811588, -0.9791777, -0.9770988, -0.9749221, -0.9726479, - -0.9702765, -0.967808, -0.9652427, -0.962581, -0.959823, -0.956969, - -0.9540192, -0.9509742, -0.947834, -0.944599, -0.9412695, -0.9378459, - -0.9343286, -0.9307178, -0.9270139, -0.9232174, -0.9193285, -0.9153477, + -0.9999902, -0.9998959, -0.9997017, -0.9994075, -0.9990134, -0.9985193, + -0.9979254, -0.9972317, -0.9964383, -0.9955452, -0.9945526, -0.9934605, + -0.9922691, -0.9909785, -0.9895887, -0.9881001, -0.9865125, -0.9848264, + -0.9830417, -0.9811588, -0.9791777, -0.9770988, -0.9749221, -0.9726479, + -0.9702765, -0.967808, -0.9652427, -0.962581, -0.959823, -0.956969, + -0.9540192, -0.9509742, -0.947834, -0.944599, -0.9412695, -0.9378459, + -0.9343286, -0.9307178, -0.9270139, -0.9232174, -0.9193285, -0.9153477, -0.9112754, -0.9071119, - -0.9028577, -0.8985133, -0.894079, -0.8895552, -0.8849425, -0.8802414, - -0.8754522, -0.8705754, -0.8656116, -0.8605613, -0.8554249, -0.8502029, - -0.844896, -0.8395045, -0.8340291, -0.8284702, -0.8228286, -0.8171046, - -0.811299, -0.8054122, -0.7994449, -0.7933976, -0.787271, -0.7810657, - -0.7747822, -0.7684214, -0.7619836, -0.7554696, -0.7488801, -0.7422158, - -0.7354771, -0.728665, -0.7217799, -0.7148228, -0.7077941, -0.7006946, - -0.6935251, -0.6862862, -0.6789787, -0.6716033, -0.6641607, -0.6566517, + -0.9028577, -0.8985133, -0.894079, -0.8895552, -0.8849425, -0.8802414, + -0.8754522, -0.8705754, -0.8656116, -0.8605613, -0.8554249, -0.8502029, + -0.844896, -0.8395045, -0.8340291, -0.8284702, -0.8228286, -0.8171046, + -0.811299, -0.8054122, -0.7994449, -0.7933976, -0.787271, -0.7810657, + -0.7747822, -0.7684214, -0.7619836, -0.7554696, -0.7488801, -0.7422158, + -0.7354771, -0.728665, -0.7217799, -0.7148228, -0.7077941, -0.7006946, + -0.6935251, -0.6862862, -0.6789787, -0.6716033, -0.6641607, -0.6566517, -0.6490771, -0.6414375, - -0.6337339, -0.6259668, -0.6181371, -0.6102456, -0.6022931, -0.5942804, - -0.5862082, -0.5780774, -0.5698889, -0.5616433, -0.5533416, -0.5449845, - -0.5365729, -0.5281077, -0.5195897, -0.5110196, -0.5023986, -0.4937272, - -0.4850065, -0.4762373, -0.4674205, -0.4585569, -0.4496475, -0.4406931, - -0.4316946, -0.422653, -0.4135691, -0.4044438, -0.3952781, -0.3860729, - -0.3768291, -0.3675475, -0.3582293, -0.3488752, -0.3394862, -0.3300633, - -0.3206073, -0.3111193, -0.3016002, -0.292051, -0.2824725, -0.2728658, + -0.6337339, -0.6259668, -0.6181371, -0.6102456, -0.6022931, -0.5942804, + -0.5862082, -0.5780774, -0.5698889, -0.5616433, -0.5533416, -0.5449845, + -0.5365729, -0.5281077, -0.5195897, -0.5110196, -0.5023986, -0.4937272, + -0.4850065, -0.4762373, -0.4674205, -0.4585569, -0.4496475, -0.4406931, + -0.4316946, -0.422653, -0.4135691, -0.4044438, -0.3952781, -0.3860729, + -0.3768291, -0.3675475, -0.3582293, -0.3488752, -0.3394862, -0.3300633, + -0.3206073, -0.3111193, -0.3016002, -0.292051, -0.2824725, -0.2728658, -0.2632318, -0.2535715, - -0.2438858, -0.2341757, -0.2244422, -0.2146863, -0.2049089, -0.195111, - -0.1852936, -0.1754577, -0.1656042, -0.1557341, -0.1458485, -0.1359483, - -0.1260345, -0.1161081, -0.1061701, -0.09622151, -0.08626327, -0.0762964, - -0.06632189, -0.05634077, -0.046354, -0.0363626, -0.02636756, - -0.01636988, -0.006370571, 0.003629378, 0.01362896, 0.02362719, - 0.03362305, 0.04361555, 0.05360368, 0.06358646, 0.07356288, 0.08353194, - 0.09349265, 0.103444, 0.113385, 0.1233147, 0.133232, 0.1431361, + -0.2438858, -0.2341757, -0.2244422, -0.2146863, -0.2049089, -0.195111, + -0.1852936, -0.1754577, -0.1656042, -0.1557341, -0.1458485, -0.1359483, + -0.1260345, -0.1161081, -0.1061701, -0.09622151, -0.08626327, -0.0762964, + -0.06632189, -0.05634077, -0.046354, -0.0363626, -0.02636756, + -0.01636988, -0.006370571, 0.003629378, 0.01362896, 0.02362719, + 0.03362305, 0.04361555, 0.05360368, 0.06358646, 0.07356288, 0.08353194, + 0.09349265, 0.103444, 0.113385, 0.1233147, 0.133232, 0.1431361, 0.1530258, 0.1629002, 0.1727583, 0.1825991, - 0.1924217, 0.2022251, 0.2120082, 0.2217701, 0.2315098, 0.2412264, - 0.2509189, 0.2605863, 0.2702276, 0.2798419, 0.2894282, 0.2989855, - 0.308513, 0.3180096, 0.3274744, 0.3369065, 0.3463049, 0.3556686, - 0.3649968, 0.3742885, 0.3835427, 0.3927587, 0.4019353, 0.4110717, - 0.420167, 0.4292203, 0.4382307, 0.4471973, 0.4561191, 0.4649954, - 0.4738251, 0.4826075, 0.4913416, 0.5000265, 0.5086614, 0.5172455, - 0.5257779, 0.5342577, 0.5426841, 0.5510561, 0.5593731, 0.5676342, + 0.1924217, 0.2022251, 0.2120082, 0.2217701, 0.2315098, 0.2412264, + 0.2509189, 0.2605863, 0.2702276, 0.2798419, 0.2894282, 0.2989855, + 0.308513, 0.3180096, 0.3274744, 0.3369065, 0.3463049, 0.3556686, + 0.3649968, 0.3742885, 0.3835427, 0.3927587, 0.4019353, 0.4110717, + 0.420167, 0.4292203, 0.4382307, 0.4471973, 0.4561191, 0.4649954, + 0.4738251, 0.4826075, 0.4913416, 0.5000265, 0.5086614, 0.5172455, + 0.5257779, 0.5342577, 0.5426841, 0.5510561, 0.5593731, 0.5676342, 0.5758385, 0.5839852, - 0.5920735, 0.6001026, 0.6080717, 0.61598, 0.6238267, 0.631611, 0.6393321, - 0.6469893, 0.6545818, 0.6621089, 0.6695698, 0.6769636, 0.6842899, - 0.6915476, 0.6987363, 0.705855, 0.7129031, 0.71988, 0.7267848, 0.7336171, - 0.7403759, 0.7470607, 0.7536708, 0.7602055, 0.7666642, 0.7730463, - 0.779351, 0.7855778, 0.7917261, 0.7977951, 0.8037844, 0.8096933, - 0.8155213, 0.8212677, 0.826932, 0.8325136, 0.8380119, 0.8434264, + 0.5920735, 0.6001026, 0.6080717, 0.61598, 0.6238267, 0.631611, 0.6393321, + 0.6469893, 0.6545818, 0.6621089, 0.6695698, 0.6769636, 0.6842899, + 0.6915476, 0.6987363, 0.705855, 0.7129031, 0.71988, 0.7267848, 0.7336171, + 0.7403759, 0.7470607, 0.7536708, 0.7602055, 0.7666642, 0.7730463, + 0.779351, 0.7855778, 0.7917261, 0.7977951, 0.8037844, 0.8096933, + 0.8155213, 0.8212677, 0.826932, 0.8325136, 0.8380119, 0.8434264, 0.8487566, 0.8540019, 0.8591618, 0.8642358, 0.8692234, 0.8741241, - 0.8789373, 0.8836626, 0.8882996, 0.8928478, 0.8973066, 0.9016758, - 0.9059547, 0.9101431, 0.9142405, 0.9182464, 0.9221606, 0.9259824, - 0.9297118, 0.9333481, 0.9368911, 0.9403404, 0.9436957, 0.9469566, - 0.9501228, 0.953194, 0.9561699, 0.9590501, 0.9618345, 0.9645227, - 0.9671144, 0.9696094, 0.9720075, 0.9743084, 0.9765118, 0.9786175, - 0.9806255, 0.9825354, 0.9843469, 0.9860601, 0.9876747, 0.9891905, - 0.9906074, 0.9919252, 0.9931438, 0.9942631, 0.995283, 0.9962034, + 0.8789373, 0.8836626, 0.8882996, 0.8928478, 0.8973066, 0.9016758, + 0.9059547, 0.9101431, 0.9142405, 0.9182464, 0.9221606, 0.9259824, + 0.9297118, 0.9333481, 0.9368911, 0.9403404, 0.9436957, 0.9469566, + 0.9501228, 0.953194, 0.9561699, 0.9590501, 0.9618345, 0.9645227, + 0.9671144, 0.9696094, 0.9720075, 0.9743084, 0.9765118, 0.9786175, + 0.9806255, 0.9825354, 0.9843469, 0.9860601, 0.9876747, 0.9891905, + 0.9906074, 0.9919252, 0.9931438, 0.9942631, 0.995283, 0.9962034, 0.9970241, 0.9977452, - 0.9983664, 0.9988878, 0.9993094, 0.999631, 0.9998527, 0.9999743, 0.999996, - 0.9999177, 0.9997393, 0.9994611, 0.9990828, 0.9986047, 0.9980267, - 0.9973488, 0.9965713, 0.9956941, 0.9947174, 0.9936411, 0.9924655, - 0.9911907, 0.9898167, 0.9883437, 0.9867719, 0.9851015, 0.9833325, - 0.9814652, 0.9794998, 0.9774364, 0.9752753, 0.9730166, 0.9706606, - 0.9682076, 0.9656578, 0.9630114, 0.9602687, 0.9574299, 0.9544954, + 0.9983664, 0.9988878, 0.9993094, 0.999631, 0.9998527, 0.9999743, 0.999996, + 0.9999177, 0.9997393, 0.9994611, 0.9990828, 0.9986047, 0.9980267, + 0.9973488, 0.9965713, 0.9956941, 0.9947174, 0.9936411, 0.9924655, + 0.9911907, 0.9898167, 0.9883437, 0.9867719, 0.9851015, 0.9833325, + 0.9814652, 0.9794998, 0.9774364, 0.9752753, 0.9730166, 0.9706606, + 0.9682076, 0.9656578, 0.9630114, 0.9602687, 0.9574299, 0.9544954, 0.9514655, 0.9483404, 0.9451205, 0.9418061, 0.9383975, 0.934895, 0.9312991, - 0.9276101, 0.9238282, 0.9199541, 0.9159878, 0.9119301, 0.9077811, - 0.9035413, 0.8992112, 0.8947912, 0.8902817, 0.8856831, 0.880996, - 0.8762208, 0.871358, 0.866408, 0.8613714, 0.8562487, 0.8510403, - 0.8457468, 0.8403688, 0.8349067, 0.8293611, 0.8237326, 0.8180218, - 0.8122291, 0.8063552, 0.8004007, 0.7943661, 0.7882521, 0.7820593, - 0.7757882, 0.7694396, 0.763014, 0.7565122, 0.7499346, 0.7432821, - 0.7365553, 0.7297548, 0.7228814, 0.7159356, 0.7089183, 0.70183, + 0.9276101, 0.9238282, 0.9199541, 0.9159878, 0.9119301, 0.9077811, + 0.9035413, 0.8992112, 0.8947912, 0.8902817, 0.8856831, 0.880996, + 0.8762208, 0.871358, 0.866408, 0.8613714, 0.8562487, 0.8510403, + 0.8457468, 0.8403688, 0.8349067, 0.8293611, 0.8237326, 0.8180218, + 0.8122291, 0.8063552, 0.8004007, 0.7943661, 0.7882521, 0.7820593, + 0.7757882, 0.7694396, 0.763014, 0.7565122, 0.7499346, 0.7432821, + 0.7365553, 0.7297548, 0.7228814, 0.7159356, 0.7089183, 0.70183, 0.6946716, 0.6874437, - 0.6801471, 0.6727825, 0.6653506, 0.6578521, 0.6502879, 0.6426586, - 0.6349651, 0.627208, 0.6193883, 0.6115066, 0.6035637, 0.5955606, - 0.5874978, 0.5793763, 0.5711969, 0.5629603, 0.5546675, 0.5463191, - 0.5379162, 0.5294595, 0.5209498, 0.512388, 0.503775, 0.4951116, - 0.4863987, 0.4776371, 0.4688278, 0.4599716, 0.4510695, 0.4421222, - 0.4331307, 0.4240958, 0.4150186, 0.4058999, 0.3967406, 0.3875416, - 0.3783038, 0.3690283, 0.3597158, 0.3503673, 0.3409838, 0.3315663, + 0.6801471, 0.6727825, 0.6653506, 0.6578521, 0.6502879, 0.6426586, + 0.6349651, 0.627208, 0.6193883, 0.6115066, 0.6035637, 0.5955606, + 0.5874978, 0.5793763, 0.5711969, 0.5629603, 0.5546675, 0.5463191, + 0.5379162, 0.5294595, 0.5209498, 0.512388, 0.503775, 0.4951116, + 0.4863987, 0.4776371, 0.4688278, 0.4599716, 0.4510695, 0.4421222, + 0.4331307, 0.4240958, 0.4150186, 0.4058999, 0.3967406, 0.3875416, + 0.3783038, 0.3690283, 0.3597158, 0.3503673, 0.3409838, 0.3315663, 0.3221155, 0.3126326 }; diff --git a/ncdap_test/test_partvar2.c b/ncdap_test/test_partvar2.c index 3d22518081..1965507251 100644 --- a/ncdap_test/test_partvar2.c +++ b/ncdap_test/test_partvar2.c @@ -1,3 +1,13 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ /* Test part variable fetch code */ @@ -9,7 +19,7 @@ Test part variable fetch code #include "ncdispatch.h" #include "nctestserver.h" -/* The DDS in netcdf classic form is as follows: +/* The DDS in netcdf classic form is as follows: netcdf test { dimensions: Bands\:PolarGrid = 3 ; @@ -44,7 +54,7 @@ netcdf test { /* Setup an odometer */ typedef struct Odom { int rank; - size_t* index; + size_t* index; size_t* stop; size_t* start; size_t* count; @@ -140,7 +150,7 @@ subslice(int rank, size_t* count, int startdim) { int i; size_t offset = 1; - for(i=startdim;irank == 0) return 0; + if(odom->rank == 0) return 0; for(i=odom->rank-1;i>=0;i--) { odom->index[i]++; if(odom->index[i] < odom->stop[i]) break; @@ -233,1410 +243,1410 @@ odom_count(Odom* odom) for(i=0;irank;i++) { offset *= odom->count[i]; offset += odom->index[i]; - } + } return offset; } /* Capture the complete set of data */ static float target_content[YDim_UTMGrid*XDim_UTMGrid] = { - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, - 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3.28348221156809e-85, 1.32317747557569e+199, 1.18832008840094e+190, + 1.35441148522879e-306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.20477907738388e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; diff --git a/ncdap_test/test_vara.c b/ncdap_test/test_vara.c index b819a29c5f..aee2d2865f 100644 --- a/ncdap_test/test_vara.c +++ b/ncdap_test/test_vara.c @@ -1,3 +1,13 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ #include "config.h" #include #include @@ -5,7 +15,7 @@ #include "netcdf.h" #include "t_srcdir.h" -/* The DDS in netcdf classic form is as follows: +/* The DDS in netcdf classic form is as follows: netcdf test { dimensions: t = 10 ; @@ -37,7 +47,7 @@ netcdf test { /* Setup an odometer */ typedef struct Odom { int rank; - size_t* index; + size_t* index; size_t* stop; size_t* start; size_t* count; @@ -165,7 +175,7 @@ static void odom_reclaim(Odom* odom) } -static void odom_set(Odom* odom, size_t* start, size_t* count) +static void odom_set(Odom* odom, size_t* start, size_t* count) { int i; /* Init the odometer */ @@ -187,7 +197,7 @@ static int odom_more(Odom* odom) static int odom_incr(Odom* odom) { int i; /* do not make unsigned */ - if(odom->rank == 0) return 0; + if(odom->rank == 0) return 0; for(i=odom->rank-1;i>=0;i--) { odom->index[i]++; if(odom->index[i] < odom->stop[i]) break; @@ -205,366 +215,366 @@ static size_t odom_count(Odom* odom) for(i=0;irank;i++) { offset *= odom->count[i]; offset += odom->index[i]; - } + } return offset; } #ifdef IGNORE static float threeD_data[X][Y][Z] = { - 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, + 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, + 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994, - 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, - 0.990215996212637, 0.988771077936042, 0.987227283375627, + 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, + 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, 0.983843692788121, 0.98200423511727, - 0.980066577841242, 0.978030914724148, 0.975897449330606, 0.973666395005375, - 0.97133797485203, 0.968912421710645, 0.966389978134513, + 0.980066577841242, 0.978030914724148, 0.975897449330606, 0.973666395005375, + 0.97133797485203, 0.968912421710645, 0.966389978134513, 0.963770896365891, 0.961055438310771, 0.958243875512697, - 0.955336489125606, 0.952333569885713, 0.949235418082441, 0.946042343528387, - 0.942754665528346, 0.939372712847379, 0.935896823677935, + 0.955336489125606, 0.952333569885713, 0.949235418082441, 0.946042343528387, + 0.942754665528346, 0.939372712847379, 0.935896823677935, 0.932327345606034, 0.92866463557651, 0.924909059857313, - 0.921060994002885, 0.917120822816605, 0.913088940312308, 0.908965749674885, - 0.904751663219963, 0.900447102352677, 0.896052497525525, + 0.921060994002885, 0.917120822816605, 0.913088940312308, 0.908965749674885, + 0.904751663219963, 0.900447102352677, 0.896052497525525, 0.891568288195329, 0.886994922779284, 0.882332858610121, - 0.877582561890373, 0.872744507645751, 0.86781917967765, 0.862807070514761, - 0.857708681363824, 0.852524522059506, 0.847255111013416, + 0.877582561890373, 0.872744507645751, 0.86781917967765, 0.862807070514761, + 0.857708681363824, 0.852524522059506, 0.847255111013416, 0.841900975162269, 0.836462649915187, 0.830940679100164, - 0.825335614909678, 0.819648017845479, 0.813878456662534, 0.808027508312152, - 0.802095757884293, 0.796083798549056, 0.789992231497365, + 0.825335614909678, 0.819648017845479, 0.813878456662534, 0.808027508312152, + 0.802095757884293, 0.796083798549056, 0.789992231497365, 0.783821665880849, 0.777572718750928, 0.771246014997107, - 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, - 0.738468558729588, 0.731688868873821, 0.724836010740905, + 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, + 0.738468558729588, 0.731688868873821, 0.724836010740905, 0.717910669610943, 0.710913538012277, 0.703845315652236, - 0.696706709347165, 0.689498432951747, 0.682221207287614, 0.674875760071267, - 0.667462825841308, 0.659983145884982, 0.652437468164052, + 0.696706709347165, 0.689498432951747, 0.682221207287614, 0.674875760071267, + 0.667462825841308, 0.659983145884982, 0.652437468164052, 0.644826547240001, 0.63715114419858, 0.629412026573697, - 0.621609968270664, 0.613745749488812, 0.605820156643463, 0.597833982287298, - 0.589788025031098, 0.581683089463883, 0.573519986072457, + 0.621609968270664, 0.613745749488812, 0.605820156643463, 0.597833982287298, + 0.589788025031098, 0.581683089463883, 0.573519986072457, 0.565299531160354, 0.557022546766217, 0.548689860581588, - 0.54030230586814, 0.531860721374355, 0.52336595125165, 0.514818844969955, - 0.506220257232778, 0.497571047891727, 0.488872081860527, + 0.54030230586814, 0.531860721374355, 0.52336595125165, 0.514818844969955, + 0.506220257232778, 0.497571047891727, 0.488872081860527, 0.480124229028534, 0.47132836417374, 0.462485366875301, - 0.453596121425577, 0.444661516741707, 0.435682446276712, 0.426659807930157, - 0.417594503958358, 0.408487440884157, 0.399339529406273, + 0.453596121425577, 0.444661516741707, 0.435682446276712, 0.426659807930157, + 0.417594503958358, 0.408487440884157, 0.399339529406273, 0.39015168430823, 0.380924824366882, 0.371659872260533, - 0.362357754476674, 0.35301940121933, 0.343645746316047, 0.334237727124503, - 0.324796284438776, 0.315322362395269, 0.305816908378289, + 0.362357754476674, 0.35301940121933, 0.343645746316047, 0.334237727124503, + 0.324796284438776, 0.315322362395269, 0.305816908378289, 0.296280872925319, 0.286715209631956, 0.277120875056558, - 0.267498828624587, 0.25785003253267, 0.248175451652373, 0.238476053433723, - 0.228752807808459, 0.219006687093041, 0.209238665891419, + 0.267498828624587, 0.25785003253267, 0.248175451652373, 0.238476053433723, + 0.228752807808459, 0.219006687093041, 0.209238665891419, 0.199449720997573, 0.189640831297834, 0.179812977673, - 0.169967142900241, 0.160104311554831, 0.150225469911686, 0.140331605846737, - 0.130423708738146, 0.120502769367367, 0.11056977982007, + 0.169967142900241, 0.160104311554831, 0.150225469911686, 0.140331605846737, + 0.130423708738146, 0.120502769367367, 0.11056977982007, 0.100625733386932, 0.0906716244643097, 0.0807084484548006, - 0.0707372016677029, 0.0607588812193859, 0.0507744849335792, - 0.040785011241591, 0.0307914590824661, 0.0207948278030924, - 0.0107961170582674, 0.000796326710733263, -0.00920354326880834, + 0.0707372016677029, 0.0607588812193859, 0.0507744849335792, + 0.040785011241591, 0.0307914590824661, 0.0207948278030924, + 0.0107961170582674, 0.000796326710733263, -0.00920354326880834, -0.0192024929016926, - -0.0291995223012888, -0.0391936317729877, -0.0491838219141706, - -0.0591690937141481, -0.0691484486540619, -0.0791208888067339, - -0.089085416936459, -0.099041036598728, -0.108986752239871, + -0.0291995223012888, -0.0391936317729877, -0.0491838219141706, + -0.0591690937141481, -0.0691484486540619, -0.0791208888067339, + -0.089085416936459, -0.099041036598728, -0.108986752239871, -0.118921569296612, - -0.128844494295525, -0.138754534952378, -0.148650700271364, - -0.158532000644198, -0.168397447949077, -0.178246055649492, - -0.18807683889288, -0.197888814609109, -0.207681001608784, + -0.128844494295525, -0.138754534952378, -0.148650700271364, + -0.158532000644198, -0.168397447949077, -0.178246055649492, + -0.18807683889288, -0.197888814609109, -0.207681001608784, -0.217452420681365, - -0.227202094693087, -0.236929048684675, -0.246632309968834, - -0.256310908227523, -0.26596387560898, -0.275590246824513, - -0.285189059245021, -0.294759352997261, -0.304300171059833, + -0.227202094693087, -0.236929048684675, -0.246632309968834, + -0.256310908227523, -0.26596387560898, -0.275590246824513, + -0.285189059245021, -0.294759352997261, -0.304300171059833, -0.313810559358882, - -0.323289566863503, -0.332736245680845, -0.342149651150898, - -0.35152884194096, -0.360872880139767, -0.370180831351287, - -0.379451764788155, -0.388684753364752, -0.397878873789916, + -0.323289566863503, -0.332736245680845, -0.342149651150898, + -0.35152884194096, -0.360872880139767, -0.370180831351287, + -0.379451764788155, -0.388684753364752, -0.397878873789916, -0.407033206659266, - -0.416146836547142, -0.425218852098152, -0.4342483461183, - -0.443234415665709, -0.452176162140912, -0.461072691376713, - -0.469923113727602, -0.47872654415872, -0.487482102334359, + -0.416146836547142, -0.425218852098152, -0.4342483461183, + -0.443234415665709, -0.452176162140912, -0.461072691376713, + -0.469923113727602, -0.47872654415872, -0.487482102334359, -0.496188912705999, - -0.504846104599858, -0.513452812303959, -0.522008175154707, - -0.530511337622945, -0.538961449399512, -0.547357665480271, - -0.555699146250613, -0.56398505756941, -0.572214570852437, + -0.504846104599858, -0.513452812303959, -0.522008175154707, + -0.530511337622945, -0.538961449399512, -0.547357665480271, + -0.555699146250613, -0.56398505756941, -0.572214570852437, -0.580386863155222, - -0.588501117255346, -0.59655652173416, -0.60455227105793, - -0.612487565658385, -0.62036161201268, -0.628173622722739, - -0.635922816594002, -0.643608418713541, -0.651229660527546, + -0.588501117255346, -0.59655652173416, -0.60455227105793, + -0.612487565658385, -0.62036161201268, -0.628173622722739, + -0.635922816594002, -0.643608418713541, -0.651229660527546, -0.658785779918188, - -0.666276021279824, -0.673699635594561, -0.681055880507152, - -0.688344020399238, -0.695563326462902, -0.702713076773554, - -0.70979255636212, -0.716801057286543, -0.723737878702569, + -0.666276021279824, -0.673699635594561, -0.681055880507152, + -0.688344020399238, -0.695563326462902, -0.702713076773554, + -0.70979255636212, -0.716801057286543, -0.723737878702569, -0.730602326933837, - -0.737393715541245, -0.744111365391593, -0.750754604725491, - -0.757322769224544, -0.763815202077774, -0.770231254047307, - -0.776570283533293, -0.782831656638065, -0.789014747229531, + -0.737393715541245, -0.744111365391593, -0.750754604725491, + -0.757322769224544, -0.763815202077774, -0.770231254047307, + -0.776570283533293, -0.782831656638065, -0.789014747229531, -0.795118937003784, - -0.801143615546934, -0.807088180396146, -0.81295203709989, - -0.818734599277382, -0.824435288677222, -0.830053535235222, - -0.835588777131408, -0.841040460846201, -0.846408041215776, + -0.801143615546934, -0.807088180396146, -0.81295203709989, + -0.818734599277382, -0.824435288677222, -0.830053535235222, + -0.835588777131408, -0.841040460846201, -0.846408041215776, -0.851690981486566, - -0.856888753368947, -0.862000837090063, -0.867026721445802, - -0.871965903851917, -0.876817890394281, -0.881582195878286, - -0.886258343877352, -0.890845866780576, -0.895344305839492, + -0.856888753368947, -0.862000837090063, -0.867026721445802, + -0.871965903851917, -0.876817890394281, -0.881582195878286, + -0.886258343877352, -0.890845866780576, -0.895344305839492, -0.899753211213941, - -0.904072142017061, -0.90830066635937, -0.912438361391958, - -0.916484813348769, -0.920439617587981, -0.924302378632464, - -0.928072710209333, -0.931750235288572, -0.935334586120739, + -0.904072142017061, -0.90830066635937, -0.912438361391958, + -0.916484813348769, -0.920439617587981, -0.924302378632464, + -0.928072710209333, -0.931750235288572, -0.935334586120739, -0.938825404273736, - -0.942222340668658, -0.945525055614696, -0.948733218843107, - -0.951846509540242, -0.954864616379626, -0.95778723755309, - -0.960614080800952, -0.963344863441243, -0.965979312397975, + -0.942222340668658, -0.945525055614696, -0.948733218843107, + -0.951846509540242, -0.954864616379626, -0.95778723755309, + -0.960614080800952, -0.963344863441243, -0.965979312397975, -0.968517164228447, - -0.970958165149591, -0.973302071063349, -0.975548647581083, - -0.977697670047013, -0.979748923560684, -0.981702202998454, - -0.983557313034006, -0.985314068157884, -0.986972292696038, + -0.970958165149591, -0.973302071063349, -0.975548647581083, + -0.977697670047013, -0.979748923560684, -0.981702202998454, + -0.983557313034006, -0.985314068157884, -0.986972292696038, -0.988531820827396, - -0.989992496600445, -0.991354173948826, -0.992616716705937, - -0.993779998618556, -0.994843903359459, -0.995808324539061, - -0.996673165716047, -0.997438340407019, -0.998103772095146, + -0.989992496600445, -0.991354173948826, -0.992616716705937, + -0.993779998618556, -0.994843903359459, -0.995808324539061, + -0.996673165716047, -0.997438340407019, -0.998103772095146, -0.998669394237814, - -0.999135150273279, -0.999500993626328, -0.999766887712928, - -0.999932805943894, -0.99999873172754, -0.999964658471342, - -0.999830589582598, -0.999596538468086, -0.999262528532721, + -0.999135150273279, -0.999500993626328, -0.999766887712928, + -0.999932805943894, -0.99999873172754, -0.999964658471342, + -0.999830589582598, -0.999596538468086, -0.999262528532721, -0.998828593177219, - -0.998294775794753, -0.997661129766618, -0.996927718456887, - -0.996094615206081, -0.99516190332383, -0.994129676080546, - -0.992998036698093, -0.991767098339465, -0.990436984097473, + -0.998294775794753, -0.997661129766618, -0.996927718456887, + -0.996094615206081, -0.99516190332383, -0.994129676080546, + -0.992998036698093, -0.991767098339465, -0.990436984097473, -0.989007826982433, - -0.987479769908865, -0.985852965681203, -0.984127576978514, - -0.982303776338232, -0.980381746138899, -0.978361678581934, - -0.97624377567241, -0.974028249198852, -0.971715320712062, + -0.987479769908865, -0.985852965681203, -0.984127576978514, + -0.982303776338232, -0.980381746138899, -0.978361678581934, + -0.97624377567241, -0.974028249198852, -0.971715320712062, -0.969305221502961, - -0.966798192579461, -0.964194484642366, -0.961494358060299, - -0.958698082843669, -0.955805938617666, -0.952818214594305, - -0.949735209543496, -0.946557231763177, -0.943284599048476, + -0.966798192579461, -0.964194484642366, -0.961494358060299, + -0.958698082843669, -0.955805938617666, -0.952818214594305, + -0.949735209543496, -0.946557231763177, -0.943284599048476, -0.939917638659938, - -0.936456687290796, -0.932902091033304, -0.929254205344123, - -0.925513395008784, -0.921680034105203, -0.917754505966276, - -0.913737203141545, -0.909628527357945, -0.90542888947963, + -0.936456687290796, -0.932902091033304, -0.929254205344123, + -0.925513395008784, -0.921680034105203, -0.917754505966276, + -0.913737203141545, -0.909628527357945, -0.90542888947963, -0.901138709466889, - -0.896758416334147, -0.892288448107068, -0.88772925177875, - -0.883081283265026, -0.878345007358874, -0.873520897683938, - -0.868609436647165, -0.863611115390566, -0.858526433742102, + -0.896758416334147, -0.892288448107068, -0.88772925177875, + -0.883081283265026, -0.878345007358874, -0.873520897683938, + -0.868609436647165, -0.863611115390566, -0.858526433742102, -0.8533559001657, - -0.848100031710408, -0.842759353958694, -0.83733440097388, - -0.831825715246746, -0.826233847641272, -0.820559357339561, - -0.814802811785913, -0.808964786630086, -0.803045865669731, + -0.848100031710408, -0.842759353958694, -0.83733440097388, + -0.831825715246746, -0.826233847641272, -0.820559357339561, + -0.814802811785913, -0.808964786630086, -0.803045865669731, -0.797046640792012, - -0.790967711914417, -0.784809686924768, -0.778573181620433, - -0.772258819646744, -0.765867232434637, -0.759399059137508, - -0.752854946567295, -0.746235549129803, -0.739541528759258, + -0.790967711914417, -0.784809686924768, -0.778573181620433, + -0.772258819646744, -0.765867232434637, -0.759399059137508, + -0.752854946567295, -0.746235549129803, -0.739541528759258, -0.73277355485212, - -0.72593230420014, -0.719018460922681, -0.71203271639831, - -0.704975769195658, -0.697848325003564, -0.690651096560507, - -0.683384803583336, -0.676050172695292, -0.668647937353351, + -0.72593230420014, -0.719018460922681, -0.71203271639831, + -0.704975769195658, -0.697848325003564, -0.690651096560507, + -0.683384803583336, -0.676050172695292, -0.668647937353351, -0.66117883777488, - -0.653643620863612, -0.646043040134959, -0.63837785564066, - -0.630648833892775, -0.622856747787041, -0.615002376525574, - -0.607086505538955, -0.599109926407685, -0.591073436783031, + -0.653643620863612, -0.646043040134959, -0.63837785564066, + -0.630648833892775, -0.622856747787041, -0.615002376525574, + -0.607086505538955, -0.599109926407685, -0.591073436783031, -0.582977840307259, - -0.574823946533269, -0.566612570843644, -0.55834453436911, - -0.550020663906425, -0.541641791835699, -0.533208756037154, - -0.524722399807346, -0.516183571774825, -0.507593125815277, + -0.574823946533269, -0.566612570843644, -0.55834453436911, + -0.550020663906425, -0.541641791835699, -0.533208756037154, + -0.524722399807346, -0.516183571774825, -0.507593125815277, -0.49895192096614, - -0.490260821340699, -0.481520696041674, -0.47273241907431, - -0.46389686925898, -0.455014930143305, -0.446087489913793, - -0.437115441307028, -0.428099681520394, -0.419041112122356, + -0.490260821340699, -0.481520696041674, -0.47273241907431, + -0.46389686925898, -0.455014930143305, -0.446087489913793, + -0.437115441307028, -0.428099681520394, -0.419041112122356, -0.409940638962306, - -0.400799172079975, -0.391617625614436, -0.38239691771268, - -0.373137970437818, -0.363841709676858, -0.354509065048132, - -0.345140969808323, -0.335738360759151, -0.326302178153684, + -0.400799172079975, -0.391617625614436, -0.38239691771268, + -0.373137970437818, -0.363841709676858, -0.354509065048132, + -0.345140969808323, -0.335738360759151, -0.326302178153684, -0.316833365602319, - -0.307332869978419, -0.297801641323633, -0.288240632752882, - -0.278650800359055, -0.269033103117399, -0.259388502789626, - -0.249717963827731, -0.24002245327755, -0.230302940682059, + -0.307332869978419, -0.297801641323633, -0.288240632752882, + -0.278650800359055, -0.269033103117399, -0.259388502789626, + -0.249717963827731, -0.24002245327755, -0.230302940682059, -0.220560397984419, - -0.21079579943078, -0.20101012147286, -0.191204342670302, - -0.181379443592811, -0.171536406722112, -0.161676216353687, - -0.151799858498356, -0.141908320783673, -0.13200259235517, + -0.21079579943078, -0.20101012147286, -0.191204342670302, + -0.181379443592811, -0.171536406722112, -0.161676216353687, + -0.151799858498356, -0.141908320783673, -0.13200259235517, -0.122083663777433, - -0.112152526935055, -0.102210174933442, -0.0922576019995117, - -0.0822958033822624, -0.0723257752532545, -0.0623485146069917, - -0.0523650191612259, -0.0423762872571815, -0.0323833177597247, + -0.112152526935055, -0.102210174933442, -0.0922576019995117, + -0.0822958033822624, -0.0723257752532545, -0.0623485146069917, + -0.0523650191612259, -0.0423762872571815, -0.0323833177597247, -0.0223871099574771, - -0.0123886634628906, -0.00238897811228154, 0.0076109461341479, - 0.0176101092923073, 0.0276075114542115, 0.0376021528879766, - 0.0475930341377878, 0.057579156123846, 0.0675595202422752, + -0.0123886634628906, -0.00238897811228154, 0.0076109461341479, + 0.0176101092923073, 0.0276075114542115, 0.0376021528879766, + 0.0475930341377878, 0.057579156123846, 0.0675595202422752, 0.0775331284649787, - 0.0874989834394464, 0.0974560885884857, 0.10740344820988, - 0.117340067575955, 0.127264953033056, 0.137177112100907, + 0.0874989834394464, 0.0974560885884857, 0.10740344820988, + 0.117340067575955, 0.127264953033056, 0.137177112100907, 0.147075553571863, 0.156959287610023, 0.166827325850222, 0.176678681496857, - 0.186512369422576, 0.196327406266778, 0.206122810533958, 0.215897602691854, - 0.225650805269396, 0.235381442954451, 0.245088542691362, + 0.186512369422576, 0.196327406266778, 0.206122810533958, 0.215897602691854, + 0.225650805269396, 0.235381442954451, 0.245088542691362, 0.254771133778243, 0.264428247964056, 0.274058919545427, - 0.283662185463226, 0.293237085398863, 0.302782661870324, 0.312297960327916, - 0.321782029249722, 0.331233920236754, 0.340652688107789, + 0.283662185463226, 0.293237085398863, 0.302782661870324, 0.312297960327916, + 0.321782029249722, 0.331233920236754, 0.340652688107789, 0.350037390993891, 0.35938709043259, 0.368700851461733, - 0.37797774271298, 0.387216836504937, 0.396417208935922, 0.405577939976361, - 0.414698113560782, 0.423776817679428, 0.432813144469452, + 0.37797774271298, 0.387216836504937, 0.396417208935922, 0.405577939976361, + 0.414698113560782, 0.423776817679428, 0.432813144469452, 0.441806190305705, 0.450755055891099, 0.459658846346532, - 0.468516671300377, 0.477327644977522, 0.48609088628794, 0.494805518914805, - 0.503470671402114, 0.512085477241841, 0.520649074960579, + 0.468516671300377, 0.477327644977522, 0.48609088628794, 0.494805518914805, + 0.503470671402114, 0.512085477241841, 0.520649074960579, 0.529160608205695, 0.537619225830956, 0.546024081981648, - 0.554374336179161, 0.562669153405032, 0.570907704184454, 0.57908916466921, - 0.587212716720073, 0.595277547988606, 0.603282851998404, + 0.554374336179161, 0.562669153405032, 0.570907704184454, 0.57908916466921, + 0.587212716720073, 0.595277547988606, 0.603282851998404, 0.611227828225735, 0.619111682179599, 0.626933625481169, - 0.634692875942635, 0.642388657645414, 0.650020201017752, 0.657586742911669, - 0.665087526679283, 0.672521802248466, 0.679888826197857, + 0.634692875942635, 0.642388657645414, 0.650020201017752, 0.657586742911669, + 0.665087526679283, 0.672521802248466, 0.679888826197857, 0.687187861831201, 0.694418179251016, 0.701579055431586, - 0.70866977429126, 0.715689626764061, 0.722637910870592, 0.729513931788232, - 0.736317001920619, 0.74304644096641, 0.749701575987307, + 0.70866977429126, 0.715689626764061, 0.722637910870592, 0.729513931788232, + 0.736317001920619, 0.74304644096641, 0.749701575987307, 0.756281741475356, 0.762786279419489, 0.769214539371333, - 0.77556587851025, 0.781839661707619, 0.788035261590348, 0.794152058603611, - 0.800189441072806, 0.806146805264716, 0.812023555447886, + 0.77556587851025, 0.781839661707619, 0.788035261590348, 0.794152058603611, + 0.800189441072806, 0.806146805264716, 0.812023555447886, 0.817819103952194, 0.823532871227622, 0.829164285902202, - 0.83471278483916, 0.840177813193225, 0.845558824466117, 0.850855280561193, - 0.856066651837255, 0.861192417161521, 0.866232063961728, + 0.83471278483916, 0.840177813193225, 0.845558824466117, 0.850855280561193, + 0.856066651837255, 0.861192417161521, 0.866232063961728, 0.871185088277397, 0.876050994810224, 0.880829296973609, - 0.885519516941319, 0.890121185695265, 0.894633843072407, 0.899057037810768, - 0.903390327594559, 0.907633279098413, 0.911785468030717, + 0.885519516941319, 0.890121185695265, 0.894633843072407, 0.899057037810768, + 0.903390327594559, 0.907633279098413, 0.911785468030717, 0.915846479176035, 0.919815906436639, 0.92369335287311, - 0.927478430744036, 0.931170761544783, 0.934769976045349, 0.938275714327283, - 0.941687625819678, 0.945005369334228, 0.948228613099346, + 0.927478430744036, 0.931170761544783, 0.934769976045349, 0.938275714327283, + 0.941687625819678, 0.945005369334228, 0.948228613099346, 0.951357034793342, 0.954390321576654, 0.957328170123131, - 0.960170286650366, 0.962916386949075, 0.965566196411518, 0.968119450058955, - 0.970575892568149, 0.972935278296897, 0.975197371308593, + 0.960170286650366, 0.962916386949075, 0.965566196411518, 0.968119450058955, + 0.970575892568149, 0.972935278296897, 0.975197371308593, 0.977361945395819, 0.979428784102971, 0.981397680747901, - 0.983268438442584, 0.985040870112812, 0.986714798516892, 0.98829005626338, - 0.989766485827815, 0.991143939568469, 0.992422279741117, + 0.983268438442584, 0.985040870112812, 0.986714798516892, 0.98829005626338, + 0.989766485827815, 0.991143939568469, 0.992422279741117, 0.993601378512806, 0.994681117974643, 0.99566139015358, - 0.996542097023217, 0.997323150513601, 0.998004472520033, 0.998585994910881, - 0.99906765953439, 0.999449418224499, 0.999731232805658, + 0.996542097023217, 0.997323150513601, 0.998004472520033, 0.998585994910881, + 0.99906765953439, 0.999449418224499, 0.999731232805658, 0.999913075096642, 0.999994926913375, 0.999976780070743, - 0.999858636383415, 0.999640507665662, 0.999322415730172, 0.998904392385876, - 0.998386479434759, 0.997768728667684, 0.997051201859214, + 0.999858636383415, 0.999640507665662, 0.999322415730172, 0.998904392385876, + 0.998386479434759, 0.997768728667684, 0.997051201859214, 0.996233970761431, 0.995317117096764, 0.994300732549815, - 0.993184918758193, 0.991969787302346, 0.990655459694407, 0.989242067366043, - 0.987729751655308, 0.986118663792513, 0.984408964885101, + 0.993184918758193, 0.991969787302346, 0.990655459694407, 0.989242067366043, + 0.987729751655308, 0.986118663792513, 0.984408964885101, 0.982600825901538, 0.980694427654217, 0.978689960781373, - 0.976587625728023, 0.974387632725921, 0.972090201772533, 0.96969556260904, - 0.967203954697364, 0.964615627196218, 0.961930838936196, + 0.976587625728023, 0.974387632725921, 0.972090201772533, 0.96969556260904, + 0.967203954697364, 0.964615627196218, 0.961930838936196, 0.959149858393887, 0.956272963665028, 0.953300442436693, - 0.95023259195853, 0.947069719013028, 0.943812139884847, 0.940460180329185, - 0.937014175539204, 0.933474470112512, 0.929841418016701, + 0.95023259195853, 0.947069719013028, 0.943812139884847, 0.940460180329185, + 0.937014175539204, 0.933474470112512, 0.929841418016701, 0.926115382553955, 0.922296736324713, 0.918385861190416, - 0.914383148235319, 0.910288997727383, 0.906103819078245, 0.901828030802283, - 0.897462060474762, 0.893006344689077, 0.888461329013091, + 0.914383148235319, 0.910288997727383, 0.906103819078245, 0.901828030802283, + 0.897462060474762, 0.893006344689077, 0.888461329013091, 0.883827467944587, 0.879105224865808, 0.874295071997128, - 0.869397490349825, 0.864412969677983, 0.859342008429514, 0.854185113696319, - 0.848942801163572, 0.84361559505816, 0.838204028096251, + 0.869397490349825, 0.864412969677983, 0.859342008429514, 0.854185113696319, + 0.848942801163572, 0.84361559505816, 0.838204028096251, 0.832708641430035, 0.827129984593597, 0.821468615447972, - 0.815725100125357, 0.809900012972498, 0.803993936493257, 0.798007461290359, - 0.791941186006336, 0.785795717263661, 0.779571669604088, + 0.815725100125357, 0.809900012972498, 0.803993936493257, 0.798007461290359, + 0.791941186006336, 0.785795717263661, 0.779571669604088, 0.773269665427194, 0.766890334928147, 0.760434316034681, - 0.753902254343305, 0.747294803054744, 0.740612622908621, 0.733856382117381, - 0.727026756299476, 0.720124428411794, 0.713150088681373, + 0.753902254343305, 0.747294803054744, 0.740612622908621, 0.733856382117381, + 0.727026756299476, 0.720124428411794, 0.713150088681373, 0.706104434536373, 0.698988170536338, 0.691802008301737, - 0.684546666442807, 0.677222870487685, 0.669831352809865, 0.662372852554955, - 0.654848115566766, 0.647257894312724, 0.639602947808631, + 0.684546666442807, 0.677222870487685, 0.669831352809865, 0.662372852554955, + 0.654848115566766, 0.647257894312724, 0.639602947808631, 0.631884041542758, 0.624101947399299, 0.616257443581182, - 0.608351314532255, 0.600384350858831, 0.592357349250641, 0.584271112401154, - 0.576126448927319, 0.567924173288695, 0.55966510570601, + 0.608351314532255, 0.600384350858831, 0.592357349250641, 0.584271112401154, + 0.576126448927319, 0.567924173288695, 0.55966510570601, 0.551350072079141, 0.542979903904521, 0.534555438191992, - 0.526077517381105, 0.517546989256877, 0.50896470686501, 0.500331528426593, - 0.491648317252275, 0.482915941655938, 0.474135274867862, + 0.526077517381105, 0.517546989256877, 0.50896470686501, 0.500331528426593, + 0.491648317252275, 0.482915941655938, 0.474135274867862, 0.465307194947413, 0.456432584695223, 0.447512331564922, - 0.43854732757439, 0.429538469216557, 0.420486657369749, 0.411392797207609, - 0.402257798108573, 0.393082573564941, 0.38386804109152, + 0.43854732757439, 0.429538469216557, 0.420486657369749, 0.411392797207609, + 0.402257798108573, 0.393082573564941, 0.38386804109152, 0.374615122133879, 0.365324741976202, 0.355997829648764, - 0.346635317835026, 0.337238142778366, 0.327807244188458, 0.318343565147303, - 0.30884805201492, 0.299321654334707, 0.289765324738495, + 0.346635317835026, 0.337238142778366, 0.327807244188458, 0.318343565147303, + 0.30884805201492, 0.299321654334707, 0.289765324738495, 0.280180018851278, 0.27056669519566, 0.260926315095994, - 0.251259842582256, 0.241568244293641, 0.231852489381904, 0.222113549414439, - 0.212352398277126, 0.202570012076944, 0.192767369044364, + 0.251259842582256, 0.241568244293641, 0.231852489381904, 0.222113549414439, + 0.212352398277126, 0.202570012076944, 0.192767369044364, 0.182945449435517, 0.173105235434182, 0.163247711053556, - 0.153373862037864, 0.14348467576378, 0.13358114114169, 0.123664248516802, - 0.113734989570117, 0.103794357219253, 0.0938433455191623, + 0.153373862037864, 0.14348467576378, 0.13358114114169, 0.123664248516802, + 0.113734989570117, 0.103794357219253, 0.0938433455191623, 0.0838829495627223, 0.0739141653812273, 0.06393798984479, - 0.0539554205626498, 0.0439674557834159, 0.0339750942952423, - 0.0239793353259525, 0.0139811784431128, 0.00398162345407974, - -0.0060183296939816, -0.0160176810140879, -0.0260154305794408, + 0.0539554205626498, 0.0439674557834159, 0.0339750942952423, + 0.0239793353259525, 0.0139811784431128, 0.00398162345407974, + -0.0060183296939816, -0.0160176810140879, -0.0260154305794408, -0.0360105786234153, - -0.0460021256395369, -0.0559890724814288, -0.0659704204627299, - -0.0759451714569599, -0.0859123279973325, -0.0958708933764978, - -0.105819871746218, -0.115758268216946, -0.125685088957318, + -0.0460021256395369, -0.0559890724814288, -0.0659704204627299, + -0.0759451714569599, -0.0859123279973325, -0.0958708933764978, + -0.105819871746218, -0.115758268216946, -0.125685088957318, -0.135599341293531, - -0.145500033808614, -0.155386176441565, -0.16525678058636, - -0.17511085919081, -0.184947426855267, -0.194765499931161, - -0.204564096619365, -0.214342237068377, -0.2240989434723, + -0.145500033808614, -0.155386176441565, -0.16525678058636, + -0.17511085919081, -0.184947426855267, -0.194765499931161, + -0.204564096619365, -0.214342237068377, -0.2240989434723, -0.233833240168624, - -0.243544153735791, -0.253230713090538, -0.262891949585, - -0.272526897103582, -0.282134592159557, -0.291714073991427, - -0.301264384658992, -0.310784569139144, -0.320273675421368, + -0.243544153735791, -0.253230713090538, -0.262891949585, + -0.272526897103582, -0.282134592159557, -0.291714073991427, + -0.301264384658992, -0.310784569139144, -0.320273675421368, -0.329730754602944, - -0.339154860983835, -0.348545052161256, -0.357900389123914, - -0.367219936345908, -0.376502761880283, -0.385747937452222, - -0.394954538551871, -0.404121644526792, -0.413248338674028, + -0.339154860983835, -0.348545052161256, -0.357900389123914, + -0.367219936345908, -0.376502761880283, -0.385747937452222, + -0.394954538551871, -0.404121644526792, -0.413248338674028, -0.422333708331768, - -0.431376844970621, -0.440376844284454, -0.449332806280839, - -0.458243835371038, -0.467109040459569, -0.47592753503331, - -0.484698437250152, -0.493420870027184, -0.502093961128397, + -0.431376844970621, -0.440376844284454, -0.449332806280839, + -0.458243835371038, -0.467109040459569, -0.47592753503331, + -0.484698437250152, -0.493420870027184, -0.502093961128397, -0.510716843251906, - -0.519288654116686, -0.527808536548793, -0.536275638567084, - -0.544689113468413, -0.553048119912302, -0.561351822005071, - -0.569599389383433, -0.57778999729752, -0.585922826693367, + -0.519288654116686, -0.527808536548793, -0.536275638567084, + -0.544689113468413, -0.553048119912302, -0.561351822005071, + -0.569599389383433, -0.57778999729752, -0.585922826693367, -0.593997064294812, - -0.602011902684824, -0.609966540386242, -0.617860181941925, - -0.625692037994295, -0.633461325364275, -0.641167267129602, - -0.648809092702519, -0.656386037906838, -0.663897345054353, + -0.602011902684824, -0.609966540386242, -0.617860181941925, + -0.625692037994295, -0.633461325364275, -0.641167267129602, + -0.648809092702519, -0.656386037906838, -0.663897345054353, -0.671342263020609, - -0.678720047320012, -0.686029960180282, -0.693271270616224, - -0.700443254502829, -0.707545194647683, -0.714576380862692, - -0.721536110035093, -0.728423686197768, -0.735238420598841, + -0.678720047320012, -0.686029960180282, -0.693271270616224, + -0.700443254502829, -0.707545194647683, -0.714576380862692, + -0.721536110035093, -0.728423686197768, -0.735238420598841, -0.741979631770551, - -0.748646645597399, -0.755238795383558, -0.76175542191954, - -0.768195873548125, -0.774559506229517, -0.780845683605749, - -0.787053777064324, -0.793183165801068, -0.799233236882215, + -0.748646645597399, -0.755238795383558, -0.76175542191954, + -0.768195873548125, -0.774559506229517, -0.780845683605749, + -0.787053777064324, -0.793183165801068, -0.799233236882215, -0.8052033853057, - -0.811093014061656, -0.816901534192113, -0.8226283648499, - -0.828272933356724, -0.833834675260437, -0.839313034391484, - -0.844707462918517, -0.850017421403178, -0.855242378854046, + -0.811093014061656, -0.816901534192113, -0.8226283648499, + -0.828272933356724, -0.833834675260437, -0.839313034391484, + -0.844707462918517, -0.850017421403178, -0.855242378854046, -0.860381812779727, - -0.865435209241112, -0.870402062902767, -0.875281877083464, - -0.880074163805853, -0.884778443845253, -0.889394246777581, - -0.893921111026392, -0.898358583909032, -0.90270622168191, + -0.865435209241112, -0.870402062902767, -0.875281877083464, + -0.880074163805853, -0.884778443845253, -0.889394246777581, + -0.893921111026392, -0.898358583909032, -0.90270622168191, -0.906963589584872, - -0.911130261884677, -0.915205821917566, -0.919189862130932, - -0.923081984124074, -0.926881798688036, -0.930588925844528, - -0.934202994883924, -0.937723644402332, -0.941150522337732, + -0.911130261884677, -0.915205821917566, -0.919189862130932, + -0.923081984124074, -0.926881798688036, -0.930588925844528, + -0.934202994883924, -0.937723644402332, -0.941150522337732, -0.944483286005189, - -0.947721602131112, -0.950865146886587, -0.953913605919758, - -0.956866674387264, -0.959724056984716, -0.962485467976237, - -0.965150631223029, -0.967719280210989, -0.970191158077357, + -0.947721602131112, -0.950865146886587, -0.953913605919758, + -0.956866674387264, -0.959724056984716, -0.962485467976237, + -0.965150631223029, -0.967719280210989, -0.970191158077357, -0.972566017636408, - -0.974843621404164, -0.977023741622146, -0.97910616028015, - -0.981090669138045, -0.982977069746599, -0.984765173467324, - -0.986454801491336, -0.988045784857242, -0.989537964468031, + -0.974843621404164, -0.977023741622146, -0.97910616028015, + -0.981090669138045, -0.982977069746599, -0.984765173467324, + -0.986454801491336, -0.988045784857242, -0.989537964468031, -0.990931191106986, - -0.992225325452603, -0.993420238092527, -0.994515809536489, - -0.995511930228257, -0.996408500556594, -0.997205430865212, - -0.997902641461745, -0.998500062625715, -0.998997634615504, + -0.992225325452603, -0.993420238092527, -0.994515809536489, + -0.995511930228257, -0.996408500556594, -0.997205430865212, + -0.997902641461745, -0.998500062625715, -0.998997634615504, -0.999395307674325, - -0.999693042035206, -0.999890807924959, -0.999988585567158, - -0.999986365184122, -0.999884146997886, -0.999681941230185, - -0.999379768101426, -0.998977657828671, -0.998475650622611, + -0.999693042035206, -0.999890807924959, -0.999988585567158, + -0.999986365184122, -0.999884146997886, -0.999681941230185, + -0.999379768101426, -0.998977657828671, -0.998475650622611, -0.99787379668355, - -0.997172156196378, -0.996370799324562, -0.995469806203119, - -0.994469266930611, -0.993369281560131, -0.992169960089301, - -0.990871422449267, -0.989473798492712, -0.987977227980866, + -0.997172156196378, -0.996370799324562, -0.995469806203119, + -0.994469266930611, -0.993369281560131, -0.992169960089301, + -0.990871422449267, -0.989473798492712, -0.987977227980866, -0.986381860569534, - -0.984687855794127, -0.982895383053711, -0.981004621594066, - -0.979015760489763, -0.976928998625255, -0.974744544674989, - -0.97246261708254, -0.970083444038766, -0.967607263458988, + -0.984687855794127, -0.982895383053711, -0.981004621594066, + -0.979015760489763, -0.976928998625255, -0.974744544674989, + -0.97246261708254, -0.970083444038766, -0.967607263458988, -0.965034322959201, - -0.96236487983131, -0.959599201017404, -0.95673756308306, - -0.953780252189686, -0.950727564065908, -0.947579803977993, - -0.944337286699328, -0.941000336478938, -0.937569287009064, + -0.96236487983131, -0.959599201017404, -0.95673756308306, + -0.953780252189686, -0.950727564065908, -0.947579803977993, + -0.944337286699328, -0.941000336478938, -0.937569287009064, -0.934044481391795, - -0.930426272104753, -0.926715020965855, -0.922911099097119, - -0.919014886887564, -0.915026773955164, -0.910947159107888, - -0.906776450303821, -0.902515064610368, -0.898163428162546, + -0.930426272104753, -0.926715020965855, -0.922911099097119, + -0.919014886887564, -0.915026773955164, -0.910947159107888, + -0.906776450303821, -0.902515064610368, -0.898163428162546, -0.893721976120377, - -0.889191152625361, -0.884571410756073, -0.879863212482849, - -0.875067028621594, -0.870183338786697, -0.865212631343072, - -0.86015540335732, -0.855012160548026, -0.849783417235186, - -0.844469696288772 + -0.889191152625361, -0.884571410756073, -0.879863212482849, + -0.875067028621594, -0.870183338786697, -0.865212631343072, + -0.86015540335732, -0.855012160548026, -0.849783417235186, + -0.844469696288772 }; #endif diff --git a/ncdap_test/testdata3/CMakeLists.txt b/ncdap_test/testdata3/CMakeLists.txt index ce0734596c..5df1d4251b 100644 --- a/ncdap_test/testdata3/CMakeLists.txt +++ b/ncdap_test/testdata3/CMakeLists.txt @@ -1,6 +1,12 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*) SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt Makefile.am) -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") \ No newline at end of file +ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/ncdump/CMakeLists.txt b/ncdump/CMakeLists.txt index 4201ef44a1..0dc02b2d58 100644 --- a/ncdump/CMakeLists.txt +++ b/ncdump/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. IF(BUILD_SHARED_LIBS AND WIN32) remove_definitions(-DDLL_EXPORT) remove_definitions(-DDLL_NETCDF) diff --git a/ncdump/Makefile.am b/ncdump/Makefile.am index 0b9e5648b9..bb398c3b51 100644 --- a/ncdump/Makefile.am +++ b/ncdump/Makefile.am @@ -1,5 +1,5 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. +# Copyright 2018, see the COPYRIGHT file for more information. # This file builds and runs the ncdump program. # Ed Hartnett, Dennis Heimbigner, Ward Fisher @@ -30,7 +30,7 @@ nccopy_SOURCES = nccopy.c nciter.c nciter.h chunkspec.h chunkspec.c \ utils.h utils.c dimmap.h dimmap.c list.c list.h # A simple netcdf-4 metadata -> xml printer. Do not install. -if USE_NETCDF4 +if USE_HDF5 noinst_PROGRAMS += nc4print nc4print_SOURCES = nc4print.c endif @@ -70,7 +70,7 @@ if LARGE_FILE_TESTS TESTS += tst_iter.sh endif -if USE_NETCDF4 +if USE_HDF5 # NetCDF-4 has some extra C programs to build. These will be run by # the shell script tests. check_PROGRAMS += tst_fileinfo tst_create_files tst_h_rdc0 \ @@ -91,10 +91,10 @@ tst_ncgen4.sh tst_nccopy4.log: run_ncgen_tests.log tst_output.log tst_ncgen4.log \ tst_fillbug.log tst_netcdf4_4.log tst_h_scalar.log tst_nccopy5.log: tst_nccopy4.log -endif #!USE_NETCDF4 +endif #!USE_HDF5 TESTS += tst_inmemory_nc3.sh -if USE_NETCDF4 +if USE_HDF5 TESTS += tst_inmemory_nc4.sh endif diff --git a/ncdump/bom.c b/ncdump/bom.c index eb2469001b..70192faf25 100644 --- a/ncdump/bom.c +++ b/ncdump/bom.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/ncdump/cdl.h b/ncdump/cdl.h index afa12defac..5272c1cbdf 100644 --- a/ncdump/cdl.h +++ b/ncdump/cdl.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncdump/cdl.h,v 1.3 2008/12/22 16:42:36 russ Exp $ *********************************************************************/ diff --git a/ncdump/cdl/CMakeLists.txt b/ncdump/cdl/CMakeLists.txt index 8c089e215e..07ec662c13 100644 --- a/ncdump/cdl/CMakeLists.txt +++ b/ncdump/cdl/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) diff --git a/ncdump/cdl/Makefile.am b/ncdump/cdl/Makefile.am index 45a399800e..45b76c7713 100644 --- a/ncdump/cdl/Makefile.am +++ b/ncdump/cdl/Makefile.am @@ -1,5 +1,5 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2007, see the COPYRIGHT file for more information. +# Copyright 2018, see the COPYRIGHT file for more information. # This is to include the libnc-dap test comparison files @@ -26,5 +26,3 @@ ref_niltest.cdl ref_tst_h_scalar.cdl ref_tst_econst.cdl \ ref_tst_nul3.cdl ref_tst_nul4.cdl ref_tst_names.cdl \ ref_tst_long_charconst.cdl tst_chararray.cdl ref_keyword.cdl \ CMakeLists.txt - - diff --git a/ncdump/chunkspec.c b/ncdump/chunkspec.c index 3117b2fc40..e48df5f7af 100644 --- a/ncdump/chunkspec.c +++ b/ncdump/chunkspec.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2010, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id $ *********************************************************************/ @@ -62,7 +62,7 @@ chunkspec_parse(int igrp, const char *spec) /* * Parse chunkspec string and convert into dimchunkspec structure. * ncid: location ID of open netCDF file or group in an open file - * spec: string of form + * spec: string of form * dim1/n1,dim2/n2,...,dimk/nk * specifying chunk size (ni) to be used for dimension named * dimi. Dimension names may be absolute, @@ -72,7 +72,7 @@ chunkspec_parse(int igrp, const char *spec) * not mentioned in the string. However, for unlimited dimensions, * the default is a default size: 4 megabytes or the * existing unlimited size if smaller. - * If the chunkspec string is "/", specifying no dimensions or + * If the chunkspec string is "/", specifying no dimensions or * chunk sizes, it indicates chunking to be turned off on output. * * Returns NC_NOERR if no error, NC_EINVAL if spec has consecutive @@ -126,7 +126,7 @@ dimchunkspec_parse(int igrp, const char *spec) char *dp; int dimid; size_t chunksize; - + for(; pp > np && *pp != '/'; pp--) { /* look backwards for "/" */ continue; } @@ -187,7 +187,7 @@ dimchunkspec_size(int indimid) { for(idim = 0; idim < dimchunkspecs.ndims; idim++) { if(indimid == dimchunkspecs.idimids[idim]) { return dimchunkspecs.chunksizes[idim]; - } + } } return 0; } @@ -211,7 +211,7 @@ dimchunkspec_omit(void) { /* * Parse per-variable chunkspec string and convert into varchunkspec structure. * ncid: location ID of open netCDF file or group in an open file - * spec: string of form + * spec: string of form * var:n1,n2,...nk * * specifying chunk size (ni) to be used for ith dimension of @@ -251,7 +251,7 @@ varchunkspec_parse(int igrp, const char *spec0) /* Lookup the variable by name */ ret = nc_inq_varid2(igrp, spec, &chunkspec->ivarid, &chunkspec->igrpid); if(ret != NC_NOERR) goto done; - + if(*p == '\0') {/* we have -c var: => do not chunk var */ chunkspec->omit = 1; /* add the chunkspec to our list */ @@ -264,16 +264,16 @@ varchunkspec_parse(int igrp, const char *spec0) while(*p) { unsigned long dimsize; q = strchr(p,','); - if(q == NULL) + if(q == NULL) q = p + strlen(p); /* Fake the endpoint */ else *q++ = '\0'; - + /* Scan as unsigned long */ if(sscanf(p,"%lu",&dimsize) != 1) {ret = NC_EINVAL; goto done;} /* Apparently not a valid dimension size */ if(chunkspec->rank >= NC_MAX_VAR_DIMS) {ret = NC_EINVAL; goto done;} /* to many chunks */ - chunkspec->chunksizes[chunkspec->rank] = (size_t)dimsize; + chunkspec->chunksizes[chunkspec->rank] = (size_t)dimsize; chunkspec->rank++; p = q; } @@ -281,7 +281,7 @@ varchunkspec_parse(int igrp, const char *spec0) /* Get some info about the var (from input) */ ret = nc_inq_var(chunkspec->igrpid,chunkspec->ivarid,NULL,NULL,&rank,dimids,NULL); if(ret != NC_NOERR) goto done; - + /* 1. check # chunksizes == rank of variable */ if(rank != chunkspec->rank) {ret = NC_EINVAL; goto done;} @@ -292,7 +292,7 @@ varchunkspec_parse(int igrp, const char *spec0) if(ret != NC_NOERR) goto done; if(chunkspec->chunksizes[i] > len) {ret = NC_EBADCHUNK; goto done;} } - + /* add the chunkspec to our list */ listpush(varchunkspecs,chunkspec); chunkspec = NULL; @@ -354,5 +354,3 @@ varchunkspec_rank(int igrpid, int ivarid) } return 0; } - - diff --git a/ncdump/chunkspec.h b/ncdump/chunkspec.h index 5c7d68d189..9b965ae40d 100644 --- a/ncdump/chunkspec.h +++ b/ncdump/chunkspec.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2010, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id $ *********************************************************************/ diff --git a/ncdump/dimmap.c b/ncdump/dimmap.c index ef7ae3d6c9..fffff30f31 100644 --- a/ncdump/dimmap.c +++ b/ncdump/dimmap.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2010, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id $ *********************************************************************/ diff --git a/ncdump/dimmap.h b/ncdump/dimmap.h index a821b37ab6..7850aadb61 100644 --- a/ncdump/dimmap.h +++ b/ncdump/dimmap.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2010, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id $ *********************************************************************/ diff --git a/ncdump/dumplib.c b/ncdump/dumplib.c index c801f5986c..598bdbabe2 100644 --- a/ncdump/dumplib.c +++ b/ncdump/dumplib.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/README file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncdump/dumplib.c,v 1.85 2010/05/05 22:15:39 dmh Exp $ *********************************************************************/ diff --git a/ncdump/dumplib.h b/ncdump/dumplib.h index 2ce26ea06f..438977e22c 100644 --- a/ncdump/dumplib.h +++ b/ncdump/dumplib.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncdump/dumplib.h,v 1.28 2009/08/13 21:06:13 russ Exp $ *********************************************************************/ diff --git a/ncdump/expected/CMakeLists.txt b/ncdump/expected/CMakeLists.txt index f5e836ea67..0aa7ca4dde 100644 --- a/ncdump/expected/CMakeLists.txt +++ b/ncdump/expected/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) diff --git a/ncdump/expected/Makefile.am b/ncdump/expected/Makefile.am index 291f46937f..775d635528 100644 --- a/ncdump/expected/Makefile.am +++ b/ncdump/expected/Makefile.am @@ -1,5 +1,5 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2007, see the COPYRIGHT file for more information. +# Copyright 2018, see the COPYRIGHT file for more information. # This is to include the test comparison files @@ -25,4 +25,3 @@ CMakeLists.txt # These do not exist because they are not run as usual tests # bigf1.dmp bigf2.dmp bigf3.dmp bigr1.dmp bigr2.dmp bigr3.dmp gfs1.dmp - diff --git a/ncdump/indent.c b/ncdump/indent.c index 79c95a5450..3678db7b22 100644 --- a/ncdump/indent.c +++ b/ncdump/indent.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2007, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncdump/indent.c,v 1.6 2009/09/28 18:27:04 russ Exp $ *********************************************************************/ diff --git a/ncdump/indent.h b/ncdump/indent.h index 15b8981f0c..9bf502c876 100644 --- a/ncdump/indent.h +++ b/ncdump/indent.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2007, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * Russ Rew *********************************************************************/ diff --git a/ncdump/isnan.h b/ncdump/isnan.h index c62f801fe6..9c51c94f6e 100644 --- a/ncdump/isnan.h +++ b/ncdump/isnan.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2008, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/README file for copying and redistribution conditions. * Russ Rew *********************************************************************/ diff --git a/ncdump/list.c b/ncdump/list.c index 30570a43ce..d5f442d76a 100644 --- a/ncdump/list.c +++ b/ncdump/list.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include #include diff --git a/ncdump/list.h b/ncdump/list.h index 2206af37dc..86f85cc262 100644 --- a/ncdump/list.h +++ b/ncdump/list.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef LIST_H #define LIST_H 1 diff --git a/ncdump/nc4print.c b/ncdump/nc4print.c index 9fda8d792c..0dab9cd9bb 100644 --- a/ncdump/nc4print.c +++ b/ncdump/nc4print.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2016, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/ncdump/nccomps.h b/ncdump/nccomps.h index 926cf9cd6e..64614df633 100644 --- a/ncdump/nccomps.h +++ b/ncdump/nccomps.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2011, University Corporation for Atmospheric + * Copyright 2018, University Corporation for Atmospheric * Research/Unidata. See \ref copyright file for copying and * redistribution conditionsmore information. *********************************************************************/ diff --git a/ncdump/nccopy.c b/ncdump/nccopy.c index 6c5243d500..ec0e4b6494 100644 --- a/ncdump/nccopy.c +++ b/ncdump/nccopy.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2010, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/README file for copying and redistribution conditions. * Thanks to Philippe Poilbarbe and Antonio S. Cofiño for * compression additions. @@ -2156,7 +2156,7 @@ main(int argc, char**argv) error("too many -F filterspecs\n"); filterspecs[nfilterspecs] = filterspec; nfilterspecs++; - // Force output to be netcdf-4 + /* Force output to be netcdf-4 */ option_kind = NC_FORMAT_NETCDF4; } #else diff --git a/ncdump/ncdump.c b/ncdump/ncdump.c index abbde44e1f..a42d51d06b 100644 --- a/ncdump/ncdump.c +++ b/ncdump/ncdump.c @@ -1,6 +1,6 @@ -/* +/*! \file -Copyright 2011 University Corporation for Atmospheric +Copyright 2018 University Corporation for Atmospheric Research/Unidata. See \ref copyright file for more info. */ #include "config.h" @@ -18,8 +18,7 @@ Research/Unidata. See \ref copyright file for more info. */ #include #endif -#ifdef _MSC_VER -#define snprintf _snprintf +#ifdef _WIN32 #include "XGetopt.h" int opterr; int optind; @@ -1107,8 +1106,9 @@ pr_att_hidden( size_t len; /* No special variable attributes for classic or 64-bit offset data */ - //if(kind == 1 || kind == 2) - //return; +#if 0 + if(kind == 1 || kind == 2) return; +#endif /* Print out Selected hidden attributes */ /* NCPROPS */ stat = nc_inq_att(ncid,NC_GLOBAL,NCPROPS,NULL,&len); diff --git a/ncdump/ncdump.h b/ncdump/ncdump.h index 4773441a7a..d5a95ef1be 100644 --- a/ncdump/ncdump.h +++ b/ncdump/ncdump.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncdump/ncdump.h,v 1.34 2009/12/02 20:03:43 russ Exp $ *********************************************************************/ diff --git a/ncdump/nciter.c b/ncdump/nciter.c index aa9a7f0599..829e3048f6 100644 --- a/ncdump/nciter.c +++ b/ncdump/nciter.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/README file for copying and redistribution conditions. * "$Id: nciter.c 400 2010-08-27 21:02:52Z russ $" *********************************************************************/ diff --git a/ncdump/nciter.h b/ncdump/nciter.h index 1da51832f2..37def81e98 100644 --- a/ncdump/nciter.h +++ b/ncdump/nciter.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/README file for copying and redistribution conditions. * "$Id: nciter.h 400 2010-08-27 21:02:52Z russ $" *********************************************************************/ diff --git a/ncdump/nctime0.c b/ncdump/nctime0.c index 8af924d978..540c265e10 100644 --- a/ncdump/nctime0.c +++ b/ncdump/nctime0.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2008, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id: nctime.c,v 1.9 2010/05/05 22:15:39 dmh Exp $ *********************************************************************/ diff --git a/ncdump/nctime0.h b/ncdump/nctime0.h index c3558e2849..2ffa2ab598 100644 --- a/ncdump/nctime0.h +++ b/ncdump/nctime0.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2008, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. * Russ Rew *********************************************************************/ diff --git a/ncdump/nctrunc.c b/ncdump/nctrunc.c index b64c163aba..c9d07fba6d 100644 --- a/ncdump/nctrunc.c +++ b/ncdump/nctrunc.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/ncdump/ocprint.c b/ncdump/ocprint.c index d64bf4373d..0c4e0da036 100644 --- a/ncdump/ocprint.c +++ b/ncdump/ocprint.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #define VALIDATE @@ -18,26 +18,22 @@ #ifdef HAVE_STRINGS_H #include #endif +#ifdef HAVE_GETOPT_H +#include +#endif -#include "oc.h" -#include "ocx.h" - -/* Utilities */ #include "netcdf.h" #include "ncuri.h" #include "ncbytes.h" #include "nclog.h" -#ifdef WIN32 -/*#include */ -#define snprintf _snprintf -#define strcasecmp stricmp -#endif +#include "oc.h" +#include "ocx.h" -#ifdef _MSC_VER +#ifdef _WIN32 #include "XGetopt.h" -int opterr; -int optind; +int opterr, optind; +char* optarg; #endif #ifndef nulldup diff --git a/ncdump/rewrite-scalar.c b/ncdump/rewrite-scalar.c index a8db86817f..2d147b63b8 100644 --- a/ncdump/rewrite-scalar.c +++ b/ncdump/rewrite-scalar.c @@ -1,6 +1,6 @@ /********************************************************************* * This is part of the Unidata netCDF package. - * Copyright 2006, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See COPYRIGHT file for copying and redistribution conditions. * * This program is part of the testing of file lengths done by the diff --git a/ncdump/tst_chunking.c b/ncdump/tst_chunking.c index 589f1c683d..95cd92010b 100644 --- a/ncdump/tst_chunking.c +++ b/ncdump/tst_chunking.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2010 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/ncdump/tst_comp.c b/ncdump/tst_comp.c index 6768f490b3..e230198122 100644 --- a/ncdump/tst_comp.c +++ b/ncdump/tst_comp.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/ncdump/tst_comp2.c b/ncdump/tst_comp2.c index 7ed2e9b1e1..b2566f4a61 100644 --- a/ncdump/tst_comp2.c +++ b/ncdump/tst_comp2.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/ncdump/tst_compress.c b/ncdump/tst_compress.c index 7c6b730a36..e226e84a34 100644 --- a/ncdump/tst_compress.c +++ b/ncdump/tst_compress.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2010 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/ncdump/tst_create_files.c b/ncdump/tst_create_files.c index 1937d85fa3..be9d55662b 100644 --- a/ncdump/tst_create_files.c +++ b/ncdump/tst_create_files.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005-2007, University +/* This is part of the netCDF package. Copyright 2018-2007, University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. diff --git a/ncdump/tst_dimsizes.c b/ncdump/tst_dimsizes.c index 28ba66bdf7..bc2ca0d72c 100644 --- a/ncdump/tst_dimsizes.c +++ b/ncdump/tst_dimsizes.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include "config.h" #include #include "err_macros.h" diff --git a/ncdump/tst_enum_data.c b/ncdump/tst_enum_data.c index b5db7f5aa2..181be12821 100644 --- a/ncdump/tst_enum_data.c +++ b/ncdump/tst_enum_data.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/ncdump/tst_fileinfo.c b/ncdump/tst_fileinfo.c index 1748b8c1b8..471f97c5d2 100644 --- a/ncdump/tst_fileinfo.c +++ b/ncdump/tst_fileinfo.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2008 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. */ diff --git a/ncdump/tst_fillbug.c b/ncdump/tst_fillbug.c index 1ae7f5954d..4f9aafd15b 100644 --- a/ncdump/tst_fillbug.c +++ b/ncdump/tst_fillbug.c @@ -1,5 +1,5 @@ /* -This is part of the netCDF package. Copyright 2017 University +This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. */ diff --git a/ncdump/tst_group_data.c b/ncdump/tst_group_data.c index 00d5cb7d71..d8f4e29a45 100644 --- a/ncdump/tst_group_data.c +++ b/ncdump/tst_group_data.c @@ -1,6 +1,6 @@ /* This is part of the netCDF package. - Copyright 2005-2007, University Corporation for Atmospheric + Copyright 2005-2018, University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. This program creates a test file with groups for ncdump to read. diff --git a/ncdump/tst_h_rdc0.c b/ncdump/tst_h_rdc0.c index 5a3c0606aa..04bc1d0e95 100644 --- a/ncdump/tst_h_rdc0.c +++ b/ncdump/tst_h_rdc0.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Use HDF5 to read c0.nc, a file created by ncdump. This check was diff --git a/ncdump/tst_h_scalar.c b/ncdump/tst_h_scalar.c index 6fd640cdc9..ea3cb0a9fd 100644 --- a/ncdump/tst_h_scalar.c +++ b/ncdump/tst_h_scalar.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2013 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. diff --git a/ncdump/tst_nans.c b/ncdump/tst_nans.c index 36c2100148..0e3efdd488 100644 --- a/ncdump/tst_nans.c +++ b/ncdump/tst_nans.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2008 University Corporation for Atmospheric Research/Unidata. + Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. This is a very simple example which writes a netCDF file with diff --git a/ncdump/tst_opaque_data.c b/ncdump/tst_opaque_data.c index 564c1000e0..8df43ce669 100644 --- a/ncdump/tst_opaque_data.c +++ b/ncdump/tst_opaque_data.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/ncdump/tst_special_atts.c b/ncdump/tst_special_atts.c index f4ac1d8ee8..7343bb6674 100644 --- a/ncdump/tst_special_atts.c +++ b/ncdump/tst_special_atts.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2008 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/ncdump/tst_string_data.c b/ncdump/tst_string_data.c index 47b1e00a89..befe1f4b0e 100644 --- a/ncdump/tst_string_data.c +++ b/ncdump/tst_string_data.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/ncdump/tst_unicode.c b/ncdump/tst_unicode.c index 83dd839ad6..5711e554ec 100644 --- a/ncdump/tst_unicode.c +++ b/ncdump/tst_unicode.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2006 University Corporation for Atmospheric Research/Unidata. + Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. This is a very simple example which writes a netCDF file with diff --git a/ncdump/tst_utf8.c b/ncdump/tst_utf8.c index 51db4e2370..02844febcf 100644 --- a/ncdump/tst_utf8.c +++ b/ncdump/tst_utf8.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2006 University Corporation for Atmospheric Research/Unidata. + Copyright 2018 University Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for conditions of use. This is a very simple example which writes a netCDF file with diff --git a/ncdump/tst_vlen_data.c b/ncdump/tst_vlen_data.c index 3ae539f610..322f8db089 100644 --- a/ncdump/tst_vlen_data.c +++ b/ncdump/tst_vlen_data.c @@ -1,4 +1,4 @@ -/* This is part of the netCDF package. Copyright 2005 University +/* This is part of the netCDF package. Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. See www.unidata.ucar.edu for more info. diff --git a/ncdump/tst_vlen_demo.c b/ncdump/tst_vlen_demo.c index 1fe598facd..691d3f5747 100644 --- a/ncdump/tst_vlen_demo.c +++ b/ncdump/tst_vlen_demo.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include #include "netcdf.h" diff --git a/ncdump/utils.c b/ncdump/utils.c index 0af3c9ebd6..1dd24819b8 100644 --- a/ncdump/utils.c +++ b/ncdump/utils.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2011, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/README file for copying and redistribution conditions. * $Id$ *********************************************************************/ @@ -13,6 +13,9 @@ #include #include #include "utils.h" +#ifndef isascii +EXTERNL int isascii(int c); +#endif /* * Print error message to stderr and exit diff --git a/ncdump/utils.h b/ncdump/utils.h index c88981f38b..ef872d0d2b 100644 --- a/ncdump/utils.h +++ b/ncdump/utils.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2011, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. * * Stuff that's common to both ncdump and nccopy diff --git a/ncdump/vardata.c b/ncdump/vardata.c index 5089829d3e..b7b59d3594 100644 --- a/ncdump/vardata.c +++ b/ncdump/vardata.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncdump/vardata.c,v 1.48 2010/05/05 22:15:39 dmh Exp $ *********************************************************************/ diff --git a/ncdump/vardata.h b/ncdump/vardata.h index a705207208..aa2e0d9aaf 100644 --- a/ncdump/vardata.h +++ b/ncdump/vardata.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. * Russ Rew *********************************************************************/ diff --git a/ncgen/CMakeLists.txt b/ncgen/CMakeLists.txt index 7314acef50..f17691ca44 100644 --- a/ncgen/CMakeLists.txt +++ b/ncgen/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. IF(BUILD_SHARED_LIBS AND WIN32) remove_definitions(-DDLL_EXPORT) remove_definitions(-DDLL_NETCDF) diff --git a/ncgen/Makefile.am b/ncgen/Makefile.am index 9faf13c656..d040157397 100644 --- a/ncgen/Makefile.am +++ b/ncgen/Makefile.am @@ -1,5 +1,5 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. +# Copyright 2008, see the COPYRIGHT file for more information. # This file builds and runs the ncgen program. # Put together AM_CPPFLAGS and AM_LDFLAGS. @@ -56,10 +56,11 @@ CLEANFILES = c0.nc c0_64.nc c0_4.nc c0_4c.nc ref_camrun.c \ # not want to other to ./configure. makeparser:: + rm -f ncgenl.c lex.ncg.c flex -Pncg -8 ncgen.l - rm -f ncgenl.c sed -e s/lex.ncg.c/ncgenl.c/g ncgenl.c bison -pncg -t -d ncgen.y - rm -f ncgeny.c ncgeny.h + rm -f ncgeny.c ncgeny.h sed -e s/ncgen.tab.c/ncgeny.c/g -e s/ncgen.tab.h/ncgeny.h/g ncgeny.c sed -e s/ncgen.tab.c/ncgeny.c/g -e s/ncgen.tab.h/ncgeny.h/g ncgeny.h + rm -f lex.ncg.c ncgen.tab.h ncgen.tab.c diff --git a/ncgen/bindata.c b/ncgen/bindata.c index 840dfdbb57..3a799a6d64 100644 --- a/ncgen/bindata.c +++ b/ncgen/bindata.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ @@ -431,13 +431,15 @@ Internal equivalent of ncaux_reclaim_data. /* It is helpful to have a structure that contains memory and an offset */ typedef struct Reclaim {char* memory; ptrdiff_t offset;} Reclaim; -static ptrdiff_t read_alignment(ptrdiff_t offset, unsigned long alignment); static int bin_reclaim_datar(Symbol* tsym, Reclaim* reclaim); +#ifdef USE_NETCDF4 +static ptrdiff_t read_alignment(ptrdiff_t offset, unsigned long alignment); static int bin_reclaim_usertype(Symbol* tsym, Reclaim* reclaim); static int bin_reclaim_compound(Symbol* tsym, Reclaim* reclaim); static int bin_reclaim_vlen(Symbol* tsym, Reclaim* reclaim); static int bin_reclaim_enum(Symbol* tsym, Reclaim* reclaim); static int bin_reclaim_opaque(Symbol* tsym, Reclaim* reclaim); +#endif int binary_reclaim_data(Symbol* tsym, void* memory, size_t count) @@ -493,6 +495,7 @@ bin_reclaim_datar(Symbol* tsym, Reclaim* reclaimer) return stat; } +#ifdef USE_NETCDF4 static int bin_reclaim_usertype(Symbol* tsym, Reclaim* reclaimer) { @@ -587,6 +590,7 @@ bin_reclaim_compound(Symbol* tsym, Reclaim* reclaimer) done: return stat; } +#endif /*USE_NETCDF4*/ #endif /*ENABLE_BINARY*/ diff --git a/ncgen/bytebuffer.c b/ncgen/bytebuffer.c index 533d352697..4acf2d5241 100644 --- a/ncgen/bytebuffer.c +++ b/ncgen/bytebuffer.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include "config.h" diff --git a/ncgen/bytebuffer.h b/ncgen/bytebuffer.h index 28c25bac7d..6ecbc5b5e7 100644 --- a/ncgen/bytebuffer.h +++ b/ncgen/bytebuffer.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef BYTEBUFFER_H diff --git a/ncgen/cdata.c b/ncgen/cdata.c index 38f8f27c2c..ebbd826386 100644 --- a/ncgen/cdata.c +++ b/ncgen/cdata.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ @@ -9,6 +9,9 @@ #ifdef ENABLE_C #include +#ifndef isnan +extern int isnan(double); +#endif static int c_uid = 0; diff --git a/ncgen/cdfdata.c b/ncgen/cdfdata.c index 40e82fbe87..34c76ac318 100644 --- a/ncgen/cdfdata.c +++ b/ncgen/cdfdata.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ /* $Id: cdfdata.c,v 1.4 2010/05/24 19:59:56 dmh Exp $ */ diff --git a/ncgen/cmldata.c b/ncgen/cmldata.c index 5f6882547c..b9f43a81f2 100644 --- a/ncgen/cmldata.c +++ b/ncgen/cmldata.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include "includes.h" #ifdef ENABLE_CML @@ -206,7 +217,7 @@ gencml_primdata(Symbol* tsym, Datasrc* src, Datalist* fillsrc, prim = srcnext(src); if(prim == NULL || prim->nctype == NC_FILLVALUE) { - gencml_fillvalue(tsym,fillsrc,src,databuf); + gencml_fillvalue(tsym,fillsrc,src,databuf); return; } @@ -327,9 +338,9 @@ xconst(Constant* ci) p = ci->value.opaquev.stringv; while(*p) { strcat(bstring,"&#"); - strncat(bstring,p,2); + strncat(bstring,p,2); strcat(bstring,";"); - p += 2; + p += 2; } return bstring; } break; @@ -471,14 +482,14 @@ gencml_stringarray(Symbol* sym, Datasrc* src, Bytebuffer* databuf) Datalist* fill = getfiller(sym); Datasrc* fillsrc = datalist2src(fill); gencml_stringarray(sym,fillsrc,databuf); - } break; + } break; default: semerror(srcline(src), "Encountered non-string constant in attribute: %s", sym->name); return; } - } + } } #endif /*ENABLE_CML*/ diff --git a/ncgen/cvt.c b/ncgen/cvt.c index d2222331eb..ba8a51fc64 100644 --- a/ncgen/cvt.c +++ b/ncgen/cvt.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ /* $Id: cvt.c,v 1.2 2010/05/24 19:59:56 dmh Exp $ */ diff --git a/ncgen/data.c b/ncgen/data.c index d8cf22679e..414c92883a 100644 --- a/ncgen/data.c +++ b/ncgen/data.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ /* $Id: data.c,v 1.7 2010/05/24 19:59:56 dmh Exp $ */ diff --git a/ncgen/data.h b/ncgen/data.h index c670974d2e..8bc2ab28d0 100644 --- a/ncgen/data.h +++ b/ncgen/data.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/ncgen/debug.c b/ncgen/debug.c index 0f7a227993..81f531f3fb 100644 --- a/ncgen/debug.c +++ b/ncgen/debug.c @@ -1,6 +1,6 @@ /* -Copyright (c) 1998-2017 University Corporation for Atmospheric Research/Unidata -See LICENSE.txt for license information. +Copyright (c) 1998-2018 University Corporation for Atmospheric Research/Unidata +See COPYRIGHT for license information. */ #include "includes.h" diff --git a/ncgen/debug.h b/ncgen/debug.h index 0a2940236c..794e1c15d2 100644 --- a/ncgen/debug.h +++ b/ncgen/debug.h @@ -1,8 +1,19 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #ifndef NCGEN_DEBUG_H #define NCGEN_DEBUG_H /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/debug.h,v 1.2 2010/03/31 18:18:34 dmh Exp $ *********************************************************************/ diff --git a/ncgen/dump.c b/ncgen/dump.c index 03b553ede1..9be716864c 100644 --- a/ncgen/dump.c +++ b/ncgen/dump.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ /* $Id: dump.c,v 1.3 2010/05/24 19:59:57 dmh Exp $ */ diff --git a/ncgen/dump.h b/ncgen/dump.h index 95e7716f4e..b727d57132 100644 --- a/ncgen/dump.h +++ b/ncgen/dump.h @@ -1,10 +1,21 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #ifndef NCGEN_DUMP_H #define NCGEN_DUMP_H /*#define F*/ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/dump.h,v 1.2 2010/04/04 19:39:44 dmh Exp $ *********************************************************************/ diff --git a/ncgen/escapes.c b/ncgen/escapes.c index 90c29aaa61..94efd0f2f9 100644 --- a/ncgen/escapes.c +++ b/ncgen/escapes.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/escapes.c,v 1.5 2010/04/04 19:39:44 dmh Exp $ *********************************************************************/ diff --git a/ncgen/f77data.c b/ncgen/f77data.c index 1f753a000d..965c7ada95 100644 --- a/ncgen/f77data.c +++ b/ncgen/f77data.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/ncgen/genbin.c b/ncgen/genbin.c index 75d3a57402..9ee37c2f88 100644 --- a/ncgen/genbin.c +++ b/ncgen/genbin.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/genbin.c,v 1.4 2010/05/27 21:34:17 dmh Exp $ *********************************************************************/ @@ -449,10 +449,12 @@ genbin_writevar(Generator* generator, Symbol* vsym, Bytebuffer* memory, stat = nc_put_vara(vsym->container->nc_id, vsym->nc_id, start, count, data); } check_err(stat,__LINE__,__FILE__); -// /* Reclaim the data */ -// stat = ncaux_reclaim_data(vsym->container->nc_id, vsym->typ.basetype->nc_id, data, nelems); -// check_err(stat,__LINE__,__FILE__); -// bbClear(memory); /* reclaim top-level memory */ +#if 0 + /* Reclaim the data */ + stat = ncaux_reclaim_data(vsym->container->nc_id, vsym->typ.basetype->nc_id, data, nelems); + check_err(stat,__LINE__,__FILE__); + bbClear(memory); /* reclaim top-level memory */ +#endif return stat; } diff --git a/ncgen/genc.c b/ncgen/genc.c index 5e6ebd5ef4..91293439a2 100644 --- a/ncgen/genc.c +++ b/ncgen/genc.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/genc.c,v 1.6 2010/05/17 23:26:44 dmh Exp $ *********************************************************************/ diff --git a/ncgen/genchar.c b/ncgen/genchar.c index bc5422f84f..f7ed3f7f40 100644 --- a/ncgen/genchar.c +++ b/ncgen/genchar.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/ncgen/gencml.c b/ncgen/gencml.c index 8462df0661..48ebaf94e5 100644 --- a/ncgen/gencml.c +++ b/ncgen/gencml.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/gencml.c,v 1.5 2010/04/04 19:39:46 dmh Exp $ *********************************************************************/ diff --git a/ncgen/generate.c b/ncgen/generate.c index 2fd819085b..e25d532613 100644 --- a/ncgen/generate.c +++ b/ncgen/generate.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/ncgen/generr.c b/ncgen/generr.c index 16c4b00f97..af2e5a3661 100644 --- a/ncgen/generr.c +++ b/ncgen/generr.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/generr.c,v 1.1 2009/09/25 18:22:22 dmh Exp $ *********************************************************************/ @@ -7,6 +7,8 @@ #include "includes.h" #include /* for isprint() */ +extern int vsnprintf(char*, size_t, const char*, va_list ap); + int error_count; #if 0 diff --git a/ncgen/generr.h b/ncgen/generr.h index 86152fb362..0b2e9453c0 100644 --- a/ncgen/generr.h +++ b/ncgen/generr.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ /* $Id: generr.h,v 1.2 2010/05/24 19:59:57 dmh Exp $ */ diff --git a/ncgen/genf77.c b/ncgen/genf77.c index 1706d1d56c..b2a7fe790f 100644 --- a/ncgen/genf77.c +++ b/ncgen/genf77.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/genf77.c,v 1.4 2010/05/17 23:26:44 dmh Exp $ *********************************************************************/ diff --git a/ncgen/genj.c b/ncgen/genj.c index 92e4e0fe6f..08dbc1c661 100644 --- a/ncgen/genj.c +++ b/ncgen/genj.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/genj.c,v 1.2 2010/05/17 23:26:44 dmh Exp $ *********************************************************************/ diff --git a/ncgen/genjjni.c b/ncgen/genjjni.c index 670ec8f926..018f13fd9a 100644 --- a/ncgen/genjjni.c +++ b/ncgen/genjjni.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/genjjni.c,v 1.6 2010/04/04 19:39:46 dmh Exp $ *********************************************************************/ diff --git a/ncgen/genjstd.c b/ncgen/genjstd.c index 30638c77bd..2e8f49a3a8 100644 --- a/ncgen/genjstd.c +++ b/ncgen/genjstd.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/genjstd.c,v 1.4 2010/05/17 23:26:45 dmh Exp $ *********************************************************************/ diff --git a/ncgen/genlib.c b/ncgen/genlib.c index f68a175786..9a2d652ffc 100644 --- a/ncgen/genlib.c +++ b/ncgen/genlib.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/genlib.c,v 1.57 2010/04/04 19:39:47 dmh Exp $ *********************************************************************/ diff --git a/ncgen/genlib.h b/ncgen/genlib.h index f7821de708..166f53f817 100644 --- a/ncgen/genlib.h +++ b/ncgen/genlib.h @@ -1,7 +1,7 @@ #ifndef NC_GENLIB_H #define NC_GENLIB_H /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/genlib.h,v 1.20 2010/05/17 23:26:45 dmh Exp $ *********************************************************************/ diff --git a/ncgen/getfill.c b/ncgen/getfill.c index 24f1f6f8e9..bd1dc3a568 100644 --- a/ncgen/getfill.c +++ b/ncgen/getfill.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/getfill.c,v 1.8 2010/04/14 22:04:56 dmh Exp $ *********************************************************************/ diff --git a/ncgen/jdata.c b/ncgen/jdata.c index f9ad0bffca..2ada56c96e 100644 --- a/ncgen/jdata.c +++ b/ncgen/jdata.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ @@ -9,6 +9,9 @@ #ifdef ENABLE_JAVA #include +#ifndef isnan +extern int isnan(double); +#endif static int j_uid = 0; diff --git a/ncgen/jdatajni.c b/ncgen/jdatajni.c index c5d1987296..f5edb8d7e0 100644 --- a/ncgen/jdatajni.c +++ b/ncgen/jdatajni.c @@ -1,3 +1,14 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ + #include "includes.h" #include "ncoffsets.h" @@ -447,7 +458,7 @@ jopaquestring(Symbol* tsym, Constant* prim, Constant* target) ASSERT((oplen%2) == 0); opstring = (char*)ecalloc(oplen*(2+4)); - opstring[0]='\0'; + opstring[0]='\0'; p=(unsigned char*)op; for(i=0;i #include diff --git a/ncgen/list.h b/ncgen/list.h index 2206af37dc..86f85cc262 100644 --- a/ncgen/list.h +++ b/ncgen/list.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef LIST_H #define LIST_H 1 diff --git a/ncgen/main.c b/ncgen/main.c index 1b28d335e0..51524db209 100644 --- a/ncgen/main.c +++ b/ncgen/main.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ /* $Id: main.c,v 1.33 2010/05/26 21:43:36 dmh Exp $ */ @@ -14,7 +14,6 @@ #ifdef _MSC_VER #include "XGetopt.h" -#define snprintf _snprintf int opterr; int optind; #endif @@ -298,7 +297,9 @@ main( derror("%s: output language is null", progname); return(1); } - //lang_name = estrdup(optarg); +#if 0 + lang_name = estrdup(optarg); +#endif lang_name = (char*) emalloc(strlen(optarg)+1); (void)strcpy(lang_name, optarg); diff --git a/ncgen/nc_iter.c b/ncgen/nc_iter.c index c8978fa4ec..433bb7be97 100644 --- a/ncgen/nc_iter.c +++ b/ncgen/nc_iter.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/README file for copying and redistribution conditions. * "$Id $" *********************************************************************/ diff --git a/ncgen/nc_iter.h b/ncgen/nc_iter.h index 8c9f70ae44..95d53b61d4 100644 --- a/ncgen/nc_iter.h +++ b/ncgen/nc_iter.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/README file for copying and redistribution conditions. * "$Id $" *********************************************************************/ diff --git a/ncgen/ncgen.h b/ncgen/ncgen.h index 739cd60db5..f54ed94734 100644 --- a/ncgen/ncgen.h +++ b/ncgen/ncgen.h @@ -1,7 +1,7 @@ #ifndef NC_NCGEN_H #define NC_NCGEN_H /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/ncgen.h,v 1.18 2010/06/01 15:34:53 ed Exp $ *********************************************************************/ diff --git a/ncgen/ncgen.l b/ncgen/ncgen.l index 389df6719d..42f3578180 100644 --- a/ncgen/ncgen.l +++ b/ncgen/ncgen.l @@ -38,6 +38,8 @@ #include "ncgen.h" #include "ncgeny.h" +EXTERNL int fileno(FILE*); + #define FILL_STRING "_" #define XDR_INT32_MIN (-2147483647-1) #define XDR_INT32_MAX 2147483647 diff --git a/ncgen/ncgen.y b/ncgen/ncgen.y index a72ce8a4c5..c119ce2dc6 100644 --- a/ncgen/ncgen.y +++ b/ncgen/ncgen.y @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id: ncgen.y,v 1.42 2010/05/18 21:32:46 dmh Exp $ *********************************************************************/ @@ -957,7 +957,7 @@ makeprimitivetype(nc_type nctype) sym->typ.typecode = nctype; sym->typ.size = ncsize(nctype); sym->typ.nelems = 1; - sym->typ.alignment = ncaux_class_alignment(nctype); + sym->typ.alignment = ncaux_class_alignment(nctype); /* Make the basetype circular so we can always ask for it */ sym->typ.basetype = sym; sym->prefix = listnew(); @@ -1260,7 +1260,7 @@ makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst) else if(tag == _NCPROPS_FLAG) { globalspecials._NCProperties = sdata; sdata = NULL; - } + } } else { Specialdata* special; /* Set up special info */ @@ -1337,7 +1337,7 @@ makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst) break; case _CHUNKSIZES_FLAG: { int i; - list = (isconst ? const2list(con) : list); + list = (isconst ? const2list(con) : list); special->nchunks = list->length; special->_ChunkSizes = (size_t*)ecalloc(sizeof(size_t)*special->nchunks); for(i=0;inchunks;i++) { diff --git a/ncgen/ncgenl.c b/ncgen/ncgenl.c index 27fbefe8d5..43dfc31dae 100644 --- a/ncgen/ncgenl.c +++ b/ncgen/ncgenl.c @@ -1,5 +1,5 @@ -#line 2 "ncgenl.c" +#line 3 "ncgenl.c" #define YY_INT_ALIGNED short int @@ -7,17 +7,11 @@ #define yy_create_buffer ncg_create_buffer #define yy_delete_buffer ncg_delete_buffer -#define yy_scan_buffer ncg_scan_buffer -#define yy_scan_string ncg_scan_string -#define yy_scan_bytes ncg_scan_bytes +#define yy_flex_debug ncg_flex_debug #define yy_init_buffer ncg_init_buffer #define yy_flush_buffer ncg_flush_buffer #define yy_load_buffer_state ncg_load_buffer_state #define yy_switch_to_buffer ncg_switch_to_buffer -#define yypush_buffer_state ncgpush_buffer_state -#define yypop_buffer_state ncgpop_buffer_state -#define yyensure_buffer_stack ncgensure_buffer_stack -#define yy_flex_debug ncg_flex_debug #define yyin ncgin #define yyleng ncgleng #define yylex ncglex @@ -33,245 +27,11 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 +#define YY_FLEX_SUBMINOR_VERSION 0 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif -#ifdef yy_create_buffer -#define ncg_create_buffer_ALREADY_DEFINED -#else -#define yy_create_buffer ncg_create_buffer -#endif - -#ifdef yy_delete_buffer -#define ncg_delete_buffer_ALREADY_DEFINED -#else -#define yy_delete_buffer ncg_delete_buffer -#endif - -#ifdef yy_scan_buffer -#define ncg_scan_buffer_ALREADY_DEFINED -#else -#define yy_scan_buffer ncg_scan_buffer -#endif - -#ifdef yy_scan_string -#define ncg_scan_string_ALREADY_DEFINED -#else -#define yy_scan_string ncg_scan_string -#endif - -#ifdef yy_scan_bytes -#define ncg_scan_bytes_ALREADY_DEFINED -#else -#define yy_scan_bytes ncg_scan_bytes -#endif - -#ifdef yy_init_buffer -#define ncg_init_buffer_ALREADY_DEFINED -#else -#define yy_init_buffer ncg_init_buffer -#endif - -#ifdef yy_flush_buffer -#define ncg_flush_buffer_ALREADY_DEFINED -#else -#define yy_flush_buffer ncg_flush_buffer -#endif - -#ifdef yy_load_buffer_state -#define ncg_load_buffer_state_ALREADY_DEFINED -#else -#define yy_load_buffer_state ncg_load_buffer_state -#endif - -#ifdef yy_switch_to_buffer -#define ncg_switch_to_buffer_ALREADY_DEFINED -#else -#define yy_switch_to_buffer ncg_switch_to_buffer -#endif - -#ifdef yypush_buffer_state -#define ncgpush_buffer_state_ALREADY_DEFINED -#else -#define yypush_buffer_state ncgpush_buffer_state -#endif - -#ifdef yypop_buffer_state -#define ncgpop_buffer_state_ALREADY_DEFINED -#else -#define yypop_buffer_state ncgpop_buffer_state -#endif - -#ifdef yyensure_buffer_stack -#define ncgensure_buffer_stack_ALREADY_DEFINED -#else -#define yyensure_buffer_stack ncgensure_buffer_stack -#endif - -#ifdef yylex -#define ncglex_ALREADY_DEFINED -#else -#define yylex ncglex -#endif - -#ifdef yyrestart -#define ncgrestart_ALREADY_DEFINED -#else -#define yyrestart ncgrestart -#endif - -#ifdef yylex_init -#define ncglex_init_ALREADY_DEFINED -#else -#define yylex_init ncglex_init -#endif - -#ifdef yylex_init_extra -#define ncglex_init_extra_ALREADY_DEFINED -#else -#define yylex_init_extra ncglex_init_extra -#endif - -#ifdef yylex_destroy -#define ncglex_destroy_ALREADY_DEFINED -#else -#define yylex_destroy ncglex_destroy -#endif - -#ifdef yyget_debug -#define ncgget_debug_ALREADY_DEFINED -#else -#define yyget_debug ncgget_debug -#endif - -#ifdef yyset_debug -#define ncgset_debug_ALREADY_DEFINED -#else -#define yyset_debug ncgset_debug -#endif - -#ifdef yyget_extra -#define ncgget_extra_ALREADY_DEFINED -#else -#define yyget_extra ncgget_extra -#endif - -#ifdef yyset_extra -#define ncgset_extra_ALREADY_DEFINED -#else -#define yyset_extra ncgset_extra -#endif - -#ifdef yyget_in -#define ncgget_in_ALREADY_DEFINED -#else -#define yyget_in ncgget_in -#endif - -#ifdef yyset_in -#define ncgset_in_ALREADY_DEFINED -#else -#define yyset_in ncgset_in -#endif - -#ifdef yyget_out -#define ncgget_out_ALREADY_DEFINED -#else -#define yyget_out ncgget_out -#endif - -#ifdef yyset_out -#define ncgset_out_ALREADY_DEFINED -#else -#define yyset_out ncgset_out -#endif - -#ifdef yyget_leng -#define ncgget_leng_ALREADY_DEFINED -#else -#define yyget_leng ncgget_leng -#endif - -#ifdef yyget_text -#define ncgget_text_ALREADY_DEFINED -#else -#define yyget_text ncgget_text -#endif - -#ifdef yyget_lineno -#define ncgget_lineno_ALREADY_DEFINED -#else -#define yyget_lineno ncgget_lineno -#endif - -#ifdef yyset_lineno -#define ncgset_lineno_ALREADY_DEFINED -#else -#define yyset_lineno ncgset_lineno -#endif - -#ifdef yywrap -#define ncgwrap_ALREADY_DEFINED -#else -#define yywrap ncgwrap -#endif - -#ifdef yyalloc -#define ncgalloc_ALREADY_DEFINED -#else -#define yyalloc ncgalloc -#endif - -#ifdef yyrealloc -#define ncgrealloc_ALREADY_DEFINED -#else -#define yyrealloc ncgrealloc -#endif - -#ifdef yyfree -#define ncgfree_ALREADY_DEFINED -#else -#define yyfree ncgfree -#endif - -#ifdef yytext -#define ncgtext_ALREADY_DEFINED -#else -#define yytext ncgtext -#endif - -#ifdef yyleng -#define ncgleng_ALREADY_DEFINED -#else -#define yyleng ncgleng -#endif - -#ifdef yyin -#define ncgin_ALREADY_DEFINED -#else -#define yyin ncgin -#endif - -#ifdef yyout -#define ncgout_ALREADY_DEFINED -#else -#define yyout ncgout -#endif - -#ifdef yy_flex_debug -#define ncg_flex_debug_ALREADY_DEFINED -#else -#define yy_flex_debug ncg_flex_debug -#endif - -#ifdef yylineno -#define ncglineno_ALREADY_DEFINED -#else -#define yylineno ncglineno -#endif - /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ @@ -292,7 +52,7 @@ #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. + * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 @@ -309,7 +69,7 @@ typedef uint32_t flex_uint32_t; 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 char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; @@ -342,48 +102,60 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - #endif /* ! C99 */ #endif /* ! FLEXINT_H */ -/* begin standard C++ headers. */ +#ifdef __cplusplus -/* TODO: this is always defined, so inline it */ -#define yyconst const +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) +#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 yynoreturn +#define yyconst #endif /* Returned upon end-of-file. */ #define YY_NULL 0 -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. +/* 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) ((YY_CHAR) (c)) +#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_NEW_FILE ncgrestart(ncgin ) + #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ @@ -413,30 +185,31 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; typedef size_t yy_size_t; #endif -extern int yyleng; +extern yy_size_t ncgleng; -extern FILE *yyin, *yyout; +extern FILE *ncgin, *ncgout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - + #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) - + /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ - /* Undo effects of setting up yytext. */ \ + /* Undo effects of setting up ncgtext. */ \ 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 */ \ + YY_DO_BEFORE_ACTION; /* set up ncgtext again */ \ } \ while ( 0 ) + #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE @@ -451,7 +224,7 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - int yy_buf_size; + yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. @@ -496,8 +269,8 @@ struct yy_buffer_state * 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. + * (via ncgrestart()), so that the user can continue scanning by + * just pointing ncgin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 @@ -507,7 +280,7 @@ 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 = NULL; /**< Stack as an array. */ +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 @@ -518,98 +291,109 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ #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. */ +/* yy_hold_char holds the character lost when ncgtext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; +yy_size_t ncgleng; /* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; +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 ... +/* Flag which is used to allow ncgwrap()'s to do buffer switches + * instead of setting up a fresh ncgin. 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 ); +void ncgrestart (FILE *input_file ); +void ncg_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE ncg_create_buffer (FILE *file,int size ); +void ncg_delete_buffer (YY_BUFFER_STATE b ); +void ncg_flush_buffer (YY_BUFFER_STATE b ); +void ncgpush_buffer_state (YY_BUFFER_STATE new_buffer ); +void ncgpop_buffer_state (void ); + +static void ncgensure_buffer_stack (void ); +static void ncg_load_buffer_state (void ); +static void ncg_init_buffer (YY_BUFFER_STATE b,FILE *file ); -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 ) +#define YY_FLUSH_BUFFER ncg_flush_buffer(YY_CURRENT_BUFFER ) -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); +YY_BUFFER_STATE ncg_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE ncg_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE ncg_scan_bytes (yyconst char *bytes,yy_size_t len ); -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); +void *ncgalloc (yy_size_t ); +void *ncgrealloc (void *,yy_size_t ); +void ncgfree (void * ); + +#define yy_new_buffer ncg_create_buffer -#define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ + ncgensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ + ncg_create_buffer(ncgin,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 (); \ + ncgensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ + ncg_create_buffer(ncgin,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 flex_uint8_t YY_CHAR; -FILE *yyin = NULL, *yyout = NULL; +typedef unsigned char YY_CHAR; + +FILE *ncgin = (FILE *) 0, *ncgout = (FILE *) 0; typedef int yy_state_type; -extern int yylineno; -int yylineno = 1; +extern int ncglineno; -extern char *yytext; +int ncglineno = 1; + +extern char *ncgtext; #ifdef yytext_ptr #undef yytext_ptr #endif -#define yytext_ptr yytext +#define yytext_ptr ncgtext -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 yynoreturn yy_fatal_error ( const char* msg ); +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 ); +#if defined(__GNUC__) && __GNUC__ >= 3 +__attribute__((__noreturn__)) +#endif +static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. + * corresponding action - sets up ncgtext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ + ncgleng = (size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; + #define YY_NUM_RULES 49 #define YY_END_OF_BUFFER 50 /* This struct is not used in this scanner, @@ -619,7 +403,7 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[422] = +static yyconst flex_int16_t yy_accept[422] = { 0, 0, 0, 46, 46, 0, 0, 50, 48, 1, 44, 48, 48, 48, 48, 38, 32, 36, 36, 35, 35, @@ -670,7 +454,7 @@ static const flex_int16_t yy_accept[422] = 0 } ; -static const YY_CHAR yy_ec[256] = +static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, @@ -702,7 +486,7 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[69] = +static yyconst YY_CHAR yy_meta[69] = { 0, 1, 1, 2, 1, 1, 1, 3, 4, 5, 5, 6, 7, 8, 8, 8, 8, 8, 8, 8, 1, @@ -713,7 +497,7 @@ static const YY_CHAR yy_meta[69] = 11, 11, 11, 14, 1, 11, 11, 11 } ; -static const flex_int16_t yy_base[440] = +static yyconst flex_uint16_t yy_base[440] = { 0, 0, 0, 325, 321, 264, 255, 318, 2387, 67, 2387, 64, 269, 61, 62, 95, 77, 136, 259, 51, 61, @@ -765,7 +549,7 @@ static const flex_int16_t yy_base[440] = 2315, 2329, 2339, 2345, 2353, 2355, 2361, 2367, 2373 } ; -static const flex_int16_t yy_def[440] = +static yyconst flex_int16_t yy_def[440] = { 0, 421, 1, 422, 422, 423, 423, 421, 421, 421, 421, 424, 425, 421, 426, 421, 427, 421, 17, 428, 428, @@ -817,7 +601,7 @@ static const flex_int16_t yy_def[440] = 421, 421, 421, 421, 421, 421, 421, 421, 421 } ; -static const flex_int16_t yy_nxt[2456] = +static yyconst flex_uint16_t yy_nxt[2456] = { 0, 8, 9, 10, 9, 8, 11, 12, 8, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 8, @@ -1091,7 +875,7 @@ static const flex_int16_t yy_nxt[2456] = 421, 421, 421, 421, 421 } ; -static const flex_int16_t yy_chk[2456] = +static yyconst flex_int16_t yy_chk[2456] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1368,8 +1152,8 @@ static const flex_int16_t yy_chk[2456] = static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; -extern int yy_flex_debug; -int yy_flex_debug = 0; +extern int ncg_flex_debug; +int ncg_flex_debug = 0; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. @@ -1378,11 +1162,11 @@ int yy_flex_debug = 0; #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET -char *yytext; +char *ncgtext; #line 1 "ncgen.l" #line 2 "ncgen.l" /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id: ncgen.l,v 1.24 2009/09/25 18:22:35 dmh Exp $ *********************************************************************/ @@ -1420,6 +1204,8 @@ char *yytext; #include "ncgen.h" #include "ncgeny.h" +EXTERNL int fileno(FILE*); + #define FILL_STRING "_" #define XDR_INT32_MIN (-2147483647-1) #define XDR_INT32_MAX 2147483647 @@ -1518,7 +1304,7 @@ struct Specialtoken specials[] = { {NULL,0} /* null terminate */ }; -#line 1521 "ncgenl.c" + /* The most correct (validating) version of UTF8 character set (Taken from: http://www.w3.org/2005/03/23-lex-U) @@ -1561,7 +1347,7 @@ ID ([A-Za-z_]|{UTF8})([A-Z.@#\[\]a-z_0-9+-]|{UTF8})* /* Note: this definition of string will work for utf8 as well, although it is a very relaxed definition */ -#line 1564 "ncgenl.c" +#line 1351 "ncgenl.c" #define INITIAL 0 #define ST_C_COMMENT 1 @@ -1579,36 +1365,36 @@ ID ([A-Za-z_]|{UTF8})([A-Z.@#\[\]a-z_0-9+-]|{UTF8})* #define YY_EXTRA_TYPE void * #endif -static int yy_init_globals ( void ); +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 ncglex_destroy (void ); -int yyget_debug ( void ); +int ncgget_debug (void ); -void yyset_debug ( int debug_flag ); +void ncgset_debug (int debug_flag ); -YY_EXTRA_TYPE yyget_extra ( void ); +YY_EXTRA_TYPE ncgget_extra (void ); -void yyset_extra ( YY_EXTRA_TYPE user_defined ); +void ncgset_extra (YY_EXTRA_TYPE user_defined ); -FILE *yyget_in ( void ); +FILE *ncgget_in (void ); -void yyset_in ( FILE * _in_str ); +void ncgset_in (FILE * _in_str ); -FILE *yyget_out ( void ); +FILE *ncgget_out (void ); -void yyset_out ( FILE * _out_str ); +void ncgset_out (FILE * _out_str ); - int yyget_leng ( void ); +yy_size_t ncgget_leng (void ); -char *yyget_text ( void ); +char *ncgget_text (void ); -int yyget_lineno ( void ); +int ncgget_lineno (void ); -void yyset_lineno ( int _line_number ); +void ncgset_lineno (int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1616,31 +1402,32 @@ void yyset_lineno ( int _line_number ); #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap ( void ); +extern "C" int ncgwrap (void ); #else -extern int yywrap ( void ); +extern int ncgwrap (void ); #endif #endif #ifndef YY_NO_UNPUT - - static void yyunput ( int c, char *buf_ptr ); - + + static void yyunput (int c,char *buf_ptr ); + #endif #ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); +static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); +static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT + #ifdef __cplusplus -static int yyinput ( void ); +static int yyinput (void ); #else -static int input ( void ); +static int input (void ); #endif #endif @@ -1660,7 +1447,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 do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#define ECHO do { if (fwrite( ncgtext, ncgleng, 1, ncgout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -1671,20 +1458,20 @@ static int input ( void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + size_t n; \ for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + (c = getc( ncgin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ + if ( c == EOF && ferror( ncgin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ - while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ + while ( (result = fread(buf, 1, max_size, ncgin))==0 && ferror(ncgin)) \ { \ if( errno != EINTR) \ { \ @@ -1692,7 +1479,7 @@ static int input ( void ); break; \ } \ errno=0; \ - clearerr(yyin); \ + clearerr(ncgin); \ } \ }\ \ @@ -1725,12 +1512,12 @@ static int input ( void ); #ifndef YY_DECL #define YY_DECL_IS_OURS 1 -extern int yylex (void); +extern int ncglex (void); -#define YY_DECL int yylex (void) +#define YY_DECL int ncglex (void) #endif /* !YY_DECL */ -/* Code executed at the beginning of each rule, after yytext and yyleng +/* Code executed at the beginning of each rule, after ncgtext and ncgleng * have been set up. */ #ifndef YY_USER_ACTION @@ -1752,7 +1539,7 @@ YY_DECL yy_state_type yy_current_state; char *yy_cp, *yy_bp; int yy_act; - + if ( !(yy_init) ) { (yy_init) = 1; @@ -1764,31 +1551,31 @@ YY_DECL if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ - if ( ! yyin ) - yyin = stdin; + if ( ! ncgin ) + ncgin = stdin; - if ( ! yyout ) - yyout = stdout; + if ( ! ncgout ) + ncgout = stdout; if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); + ncgensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); + ncg_create_buffer(ncgin,YY_BUF_SIZE ); } - yy_load_buffer_state( ); + ncg_load_buffer_state( ); } { -#line 218 "ncgen.l" +#line 220 "ncgen.l" -#line 1785 "ncgenl.c" +#line 1573 "ncgenl.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); - /* Support of yytext. */ + /* Support of ncgtext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of @@ -1810,9 +1597,9 @@ YY_DECL { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 422 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 2387 ); @@ -1841,14 +1628,14 @@ YY_DECL case 1: YY_RULE_SETUP -#line 219 "ncgen.l" +#line 221 "ncgen.l" { /* whitespace */ break; } YY_BREAK case 2: YY_RULE_SETUP -#line 223 "ncgen.l" +#line 225 "ncgen.l" { /* comment */ break; } @@ -1856,19 +1643,19 @@ YY_RULE_SETUP case 3: /* rule 3 can match eol */ YY_RULE_SETUP -#line 227 "ncgen.l" +#line 229 "ncgen.l" {int len; char* s = NULL; /* In netcdf4, this will be used in a variety of places, so only remove escapes */ /* -if(yyleng > MAXTRST) { +if(ncgleng > MAXTRST) { yyerror("string too long, truncated\n"); -yytext[MAXTRST-1] = '\0'; +ncgtext[MAXTRST-1] = '\0'; } */ - len = unescape((char *)yytext+1,yyleng-2,!ISIDENT,&s); + len = unescape((char *)ncgtext+1,ncgleng-2,!ISIDENT,&s); if(len < 0) { - sprintf(errstr,"Illegal character: %s",yytext); + sprintf(errstr,"Illegal character: %s",ncgtext); yyerror(errstr); } bbClear(lextext); @@ -1880,10 +1667,10 @@ yytext[MAXTRST-1] = '\0'; YY_BREAK case 4: YY_RULE_SETUP -#line 248 "ncgen.l" +#line 250 "ncgen.l" { /* drop leading 0x; pad to even number of chars */ - char* p = yytext+2; - int len = yyleng - 2; + char* p = ncgtext+2; + int len = ncgleng - 2; bbClear(lextext); bbAppendn(lextext,p,len); if((len % 2) == 1) bbAppend(lextext,'0'); @@ -1895,120 +1682,120 @@ YY_RULE_SETUP YY_BREAK case 5: YY_RULE_SETUP -#line 260 "ncgen.l" +#line 262 "ncgen.l" {return lexdebug(COMPOUND);} YY_BREAK case 6: YY_RULE_SETUP -#line 261 "ncgen.l" +#line 263 "ncgen.l" {return lexdebug(ENUM);} YY_BREAK case 7: YY_RULE_SETUP -#line 262 "ncgen.l" +#line 264 "ncgen.l" {return lexdebug(OPAQUE_);} YY_BREAK case 8: YY_RULE_SETUP -#line 264 "ncgen.l" +#line 266 "ncgen.l" {return lexdebug(FLOAT_K);} YY_BREAK case 9: YY_RULE_SETUP -#line 265 "ncgen.l" +#line 267 "ncgen.l" {return lexdebug(CHAR_K);} YY_BREAK case 10: YY_RULE_SETUP -#line 266 "ncgen.l" +#line 268 "ncgen.l" {return lexdebug(BYTE_K);} YY_BREAK case 11: YY_RULE_SETUP -#line 267 "ncgen.l" +#line 269 "ncgen.l" {return lexdebug(UBYTE_K);} YY_BREAK case 12: YY_RULE_SETUP -#line 268 "ncgen.l" +#line 270 "ncgen.l" {return lexdebug(SHORT_K);} YY_BREAK case 13: YY_RULE_SETUP -#line 269 "ncgen.l" +#line 271 "ncgen.l" {return lexdebug(USHORT_K);} YY_BREAK case 14: YY_RULE_SETUP -#line 270 "ncgen.l" +#line 272 "ncgen.l" {return lexdebug(INT_K);} YY_BREAK case 15: YY_RULE_SETUP -#line 271 "ncgen.l" +#line 273 "ncgen.l" {return lexdebug(UINT_K);} YY_BREAK case 16: YY_RULE_SETUP -#line 272 "ncgen.l" +#line 274 "ncgen.l" {return lexdebug(INT64_K);} YY_BREAK case 17: YY_RULE_SETUP -#line 273 "ncgen.l" +#line 275 "ncgen.l" {return lexdebug(UINT64_K);} YY_BREAK case 18: YY_RULE_SETUP -#line 274 "ncgen.l" +#line 276 "ncgen.l" {return lexdebug(DOUBLE_K);} YY_BREAK case 19: YY_RULE_SETUP -#line 275 "ncgen.l" +#line 277 "ncgen.l" {return lexdebug(STRING_K);} YY_BREAK case 20: YY_RULE_SETUP -#line 277 "ncgen.l" +#line 279 "ncgen.l" {int32_val = -1; return lexdebug(NC_UNLIMITED_K);} YY_BREAK case 21: YY_RULE_SETUP -#line 280 "ncgen.l" +#line 282 "ncgen.l" {return lexdebug(TYPES);} YY_BREAK case 22: YY_RULE_SETUP -#line 281 "ncgen.l" +#line 283 "ncgen.l" {return lexdebug(DIMENSIONS);} YY_BREAK case 23: YY_RULE_SETUP -#line 282 "ncgen.l" +#line 284 "ncgen.l" {return lexdebug(VARIABLES);} YY_BREAK case 24: YY_RULE_SETUP -#line 283 "ncgen.l" +#line 285 "ncgen.l" {return lexdebug(DATA);} YY_BREAK case 25: YY_RULE_SETUP -#line 284 "ncgen.l" +#line 286 "ncgen.l" {return lexdebug(GROUP);} YY_BREAK case 26: YY_RULE_SETUP -#line 286 "ncgen.l" +#line 288 "ncgen.l" {BEGIN(TEXT);return lexdebug(NETCDF);} YY_BREAK case 27: YY_RULE_SETUP -#line 288 "ncgen.l" +#line 290 "ncgen.l" { /* missing value (pre-2.4 backward compatibility) */ - if (yytext[0] == '-') { + if (ncgtext[0] == '-') { double_val = NEGNC_INFINITE; } else { double_val = NC_INFINITE; @@ -2019,7 +1806,7 @@ YY_RULE_SETUP YY_BREAK case 28: YY_RULE_SETUP -#line 297 "ncgen.l" +#line 299 "ncgen.l" { /* missing value (pre-2.4 backward compatibility) */ double_val = NAN; specialconstants = 1; @@ -2028,9 +1815,9 @@ YY_RULE_SETUP YY_BREAK case 29: YY_RULE_SETUP -#line 303 "ncgen.l" +#line 305 "ncgen.l" {/* missing value (pre-2.4 backward compatibility)*/ - if (yytext[0] == '-') { + if (ncgtext[0] == '-') { float_val = NEGNC_INFINITEF; } else { float_val = NC_INFINITEF; @@ -2041,7 +1828,7 @@ YY_RULE_SETUP YY_BREAK case 30: YY_RULE_SETUP -#line 312 "ncgen.l" +#line 314 "ncgen.l" { /* missing value (pre-2.4 backward compatibility) */ float_val = NANF; specialconstants = 1; @@ -2050,7 +1837,7 @@ YY_RULE_SETUP YY_BREAK case 31: YY_RULE_SETUP -#line 318 "ncgen.l" +#line 320 "ncgen.l" { #ifdef USE_NETCDF4 if(l_flag == L_C || l_flag == L_BINARY) @@ -2063,10 +1850,10 @@ YY_RULE_SETUP YY_BREAK case 32: YY_RULE_SETUP -#line 328 "ncgen.l" +#line 330 "ncgen.l" { bbClear(lextext); - bbAppendn(lextext,(char*)yytext,yyleng+1); /* include null */ + bbAppendn(lextext,(char*)ncgtext,ncgleng+1); /* include null */ bbNull(lextext); yylval.sym = makepath(bbContents(lextext)); return lexdebug(PATH); @@ -2074,10 +1861,10 @@ YY_RULE_SETUP YY_BREAK case 33: YY_RULE_SETUP -#line 337 "ncgen.l" +#line 339 "ncgen.l" {struct Specialtoken* st; bbClear(lextext); - bbAppendn(lextext,(char*)yytext,yyleng+1); /* include null */ + bbAppendn(lextext,(char*)ncgtext,ncgleng+1); /* include null */ bbNull(lextext); for(st=specials;st->name;st++) { if(strcmp(bbContents(lextext),st->name)==0) {return lexdebug(st->token);} @@ -2088,13 +1875,13 @@ YY_RULE_SETUP case 34: /* rule 34 can match eol */ YY_RULE_SETUP -#line 347 "ncgen.l" +#line 349 "ncgen.l" { int c; char* p; char* q; /* copy the trimmed name */ bbClear(lextext); - bbAppendn(lextext,(char*)yytext,yyleng+1); /* include null */ + bbAppendn(lextext,(char*)ncgtext,ncgleng+1); /* include null */ bbNull(lextext); p = bbContents(lextext); q = p; @@ -2108,10 +1895,10 @@ YY_RULE_SETUP YY_BREAK case 35: YY_RULE_SETUP -#line 364 "ncgen.l" +#line 366 "ncgen.l" { char* id = NULL; int len; - len = strlen(yytext); - len = unescape(yytext,len,ISIDENT,&id); + len = strlen(ncgtext); + len = unescape(ncgtext,len,ISIDENT,&id); if(NCSTREQ(id, FILL_STRING)) { efree(id); return lexdebug(FILLMARKER); @@ -2123,7 +1910,7 @@ YY_RULE_SETUP YY_BREAK case 36: YY_RULE_SETUP -#line 376 "ncgen.l" +#line 378 "ncgen.l" { /* We need to try to see what size of integer ((u)int). @@ -2191,25 +1978,25 @@ done: return 0; YY_BREAK case 37: YY_RULE_SETUP -#line 441 "ncgen.l" +#line 443 "ncgen.l" { int c; int token = 0; - int slen = strlen(yytext); + int slen = strlen(ncgtext); char* stag = NULL; int tag = NC_NAT; - char* hex = yytext+2; /* point to first true hex digit */ + char* hex = ncgtext+2; /* point to first true hex digit */ int xlen = (slen - 3); /* true hex length */ - yytext[slen-1] = '\0'; + ncgtext[slen-1] = '\0'; /* capture the tag string */ - tag = collecttag(yytext,&stag); + tag = collecttag(ncgtext,&stag); if(tag == NC_NAT) { sprintf(errstr,"Illegal integer suffix: %s",stag); yyerror(errstr); goto done; } - yytext[slen - strlen(stag)] = '\0'; + ncgtext[slen - strlen(stag)] = '\0'; if(xlen > 16) { /* truncate hi order digits */ hex += (xlen - 16); } @@ -2231,8 +2018,8 @@ YY_RULE_SETUP token = UINT64_CONST; break; default: /* should never happen */ - if (sscanf((char*)yytext, "%i", &uint32_val) != 1) { - sprintf(errstr,"bad unsigned int constant: %s",(char*)yytext); + if (sscanf((char*)ncgtext, "%i", &uint32_val) != 1) { + sprintf(errstr,"bad unsigned int constant: %s",(char*)ncgtext); yyerror(errstr); } token = UINT_CONST; @@ -2242,10 +2029,10 @@ YY_RULE_SETUP YY_BREAK case 38: YY_RULE_SETUP -#line 488 "ncgen.l" +#line 490 "ncgen.l" { - if (sscanf((char*)yytext, "%le", &double_val) != 1) { - sprintf(errstr,"bad long or double constant: %s",(char*)yytext); + if (sscanf((char*)ncgtext, "%le", &double_val) != 1) { + sprintf(errstr,"bad long or double constant: %s",(char*)ncgtext); yyerror(errstr); } return lexdebug(DOUBLE_CONST); @@ -2253,10 +2040,10 @@ YY_RULE_SETUP YY_BREAK case 39: YY_RULE_SETUP -#line 495 "ncgen.l" +#line 497 "ncgen.l" { - if (sscanf((char*)yytext, "%e", &float_val) != 1) { - sprintf(errstr,"bad float constant: %s",(char*)yytext); + if (sscanf((char*)ncgtext, "%e", &float_val) != 1) { + sprintf(errstr,"bad float constant: %s",(char*)ncgtext); yyerror(errstr); } return lexdebug(FLOAT_CONST); @@ -2265,19 +2052,19 @@ YY_RULE_SETUP case 40: /* rule 40 can match eol */ YY_RULE_SETUP -#line 502 "ncgen.l" +#line 504 "ncgen.l" { - (void) sscanf((char*)&yytext[1],"%c",&byte_val); + (void) sscanf((char*)&ncgtext[1],"%c",&byte_val); return lexdebug(BYTE_CONST); } YY_BREAK case 41: YY_RULE_SETUP -#line 506 "ncgen.l" +#line 508 "ncgen.l" { - int oct = unescapeoct(&yytext[2]); + int oct = unescapeoct(&ncgtext[2]); if(oct < 0) { - sprintf(errstr,"bad octal character constant: %s",(char*)yytext); + sprintf(errstr,"bad octal character constant: %s",(char*)ncgtext); yyerror(errstr); } byte_val = (unsigned int)oct; @@ -2286,11 +2073,11 @@ YY_RULE_SETUP YY_BREAK case 42: YY_RULE_SETUP -#line 515 "ncgen.l" +#line 517 "ncgen.l" { - int hex = unescapehex(&yytext[3]); + int hex = unescapehex(&ncgtext[3]); if(byte_val < 0) { - sprintf(errstr,"bad hex character constant: %s",(char*)yytext); + sprintf(errstr,"bad hex character constant: %s",(char*)ncgtext); yyerror(errstr); } byte_val = (unsigned int)hex; @@ -2299,9 +2086,9 @@ YY_RULE_SETUP YY_BREAK case 43: YY_RULE_SETUP -#line 524 "ncgen.l" +#line 526 "ncgen.l" { - switch ((char)yytext[2]) { + switch ((char)ncgtext[2]) { case 'a': byte_val = '\007'; break; /* not everyone under- * stands '\a' yet */ case 'b': byte_val = '\b'; break; @@ -2313,7 +2100,7 @@ YY_RULE_SETUP case '\\': byte_val = '\\'; break; case '?': byte_val = '\177'; break; case '\'': byte_val = '\''; break; - default: byte_val = (char)yytext[2]; + default: byte_val = (char)ncgtext[2]; } return lexdebug(BYTE_CONST); } @@ -2321,7 +2108,7 @@ YY_RULE_SETUP case 44: /* rule 44 can match eol */ YY_RULE_SETUP -#line 542 "ncgen.l" +#line 544 "ncgen.l" { lineno++ ; break; @@ -2329,7 +2116,7 @@ YY_RULE_SETUP YY_BREAK case 45: YY_RULE_SETUP -#line 547 "ncgen.l" +#line 549 "ncgen.l" {/*initial*/ BEGIN(ST_C_COMMENT); break; @@ -2338,21 +2125,21 @@ YY_RULE_SETUP case 46: /* rule 46 can match eol */ YY_RULE_SETUP -#line 552 "ncgen.l" +#line 554 "ncgen.l" {/* continuation */ break; } YY_BREAK case 47: YY_RULE_SETUP -#line 556 "ncgen.l" +#line 558 "ncgen.l" {/* final */ BEGIN(INITIAL); break; } YY_BREAK case YY_STATE_EOF(ST_C_COMMENT): -#line 561 "ncgen.l" +#line 563 "ncgen.l" {/* final, error */ fprintf(stderr,"unterminated /**/ comment"); BEGIN(INITIAL); @@ -2361,17 +2148,17 @@ case YY_STATE_EOF(ST_C_COMMENT): YY_BREAK case 48: YY_RULE_SETUP -#line 567 "ncgen.l" +#line 569 "ncgen.l" {/* Note: this next rule will not work for UTF8 characters */ - return lexdebug(yytext[0]) ; + return lexdebug(ncgtext[0]) ; } YY_BREAK case 49: YY_RULE_SETUP -#line 570 "ncgen.l" +#line 572 "ncgen.l" ECHO; YY_BREAK -#line 2374 "ncgenl.c" +#line 2162 "ncgenl.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(TEXT): yyterminate(); @@ -2389,15 +2176,15 @@ case YY_STATE_EOF(TEXT): { /* 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 + * just pointed ncgin at a new source and called + * ncglex(). 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_input_file = ncgin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } @@ -2450,11 +2237,11 @@ case YY_STATE_EOF(TEXT): { (yy_did_buffer_switch_on_eof) = 0; - if ( yywrap( ) ) + if ( ncgwrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up - * yytext, we can now set up + * ncgtext, 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 @@ -2504,7 +2291,7 @@ case YY_STATE_EOF(TEXT): } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ -} /* end of yylex */ +} /* end of ncglex */ /* yy_get_next_buffer - try to read in a new buffer * @@ -2517,7 +2304,7 @@ static int yy_get_next_buffer (void) { char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = (yytext_ptr); - int number_to_move, i; + yy_size_t number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -2546,7 +2333,7 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -2559,7 +2346,7 @@ static int yy_get_next_buffer (void) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -2573,7 +2360,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -2582,12 +2369,11 @@ static int yy_get_next_buffer (void) b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) ); + ncgrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; + b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( @@ -2615,7 +2401,7 @@ static int yy_get_next_buffer (void) if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); + ncgrestart(ncgin ); } else @@ -2629,15 +2415,12 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int 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, (yy_size_t) new_size ); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) ncgrealloc((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()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (yy_n_chars) += number_to_move; @@ -2655,7 +2438,7 @@ static int yy_get_next_buffer (void) { yy_state_type yy_current_state; char *yy_cp; - + yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) @@ -2670,9 +2453,9 @@ static int yy_get_next_buffer (void) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 422 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; @@ -2698,9 +2481,9 @@ static int yy_get_next_buffer (void) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 422 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 421); return yy_is_jam ? 0 : yy_current_state; @@ -2711,16 +2494,16 @@ static int yy_get_next_buffer (void) static void yyunput (int c, char * yy_bp ) { char *yy_cp; - + yy_cp = (yy_c_buf_p); - /* undo effects of setting up yytext */ + /* undo effects of setting up ncgtext */ *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. */ - int number_to_move = (yy_n_chars) + 2; + yy_size_t number_to_move = (yy_n_chars) + 2; char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; char *source = @@ -2732,7 +2515,7 @@ static int yy_get_next_buffer (void) yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + (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" ); @@ -2756,7 +2539,7 @@ static int yy_get_next_buffer (void) { int c; - + *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) @@ -2771,7 +2554,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -2788,14 +2571,14 @@ static int yy_get_next_buffer (void) */ /* Reset buffer status. */ - yyrestart( yyin ); + ncgrestart(ncgin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { - if ( yywrap( ) ) - return 0; + if ( ncgwrap( ) ) + return EOF; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; @@ -2814,7 +2597,7 @@ static int yy_get_next_buffer (void) } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ + *(yy_c_buf_p) = '\0'; /* preserve ncgtext */ (yy_hold_char) = *++(yy_c_buf_p); return c; @@ -2823,35 +2606,35 @@ static int yy_get_next_buffer (void) /** 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 ) + void ncgrestart (FILE * input_file ) { - + if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); + ncgensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); + ncg_create_buffer(ncgin,YY_BUF_SIZE ); } - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); + ncg_init_buffer(YY_CURRENT_BUFFER,input_file ); + ncg_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 ) + void ncg_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); + * ncgpop_buffer_state(); + * ncgpush_buffer_state(new_buffer); */ - yyensure_buffer_stack (); + ncgensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; @@ -2864,61 +2647,61 @@ static int yy_get_next_buffer (void) } YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); + ncg_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 + * EOF (ncgwrap()) processing, but the only time this flag + * is looked at is after ncgwrap() 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) +static void ncg_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; + ncgin = 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 ncg_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + + b = (YY_BUFFER_STATE) ncgalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in ncg_create_buffer()" ); - b->yy_buf_size = size; + b->yy_buf_size = (yy_size_t)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( (yy_size_t) (b->yy_buf_size + 2) ); + b->yy_ch_buf = (char *) ncgalloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in ncg_create_buffer()" ); b->yy_is_our_buffer = 1; - yy_init_buffer( b, file ); + ncg_init_buffer(b,file ); return b; } /** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * + * @param b a buffer created with ncg_create_buffer() + * */ - void yy_delete_buffer (YY_BUFFER_STATE b ) + void ncg_delete_buffer (YY_BUFFER_STATE b ) { - + if ( ! b ) return; @@ -2926,27 +2709,27 @@ static void yy_load_buffer_state (void) YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); + ncgfree((void *) b->yy_ch_buf ); - yyfree( (void *) b ); + ncgfree((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. + * such as during a ncgrestart() or at EOF. */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + static void ncg_init_buffer (YY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; - - yy_flush_buffer( b ); + + ncg_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. + /* If b is the current buffer, then ncg_init_buffer was _probably_ + * called from ncgrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ @@ -2955,15 +2738,15 @@ static void yy_load_buffer_state (void) } 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 ) + void ncg_flush_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; @@ -2983,23 +2766,23 @@ static void yy_load_buffer_state (void) b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); + ncg_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 ) +void ncgpush_buffer_state (YY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; - yyensure_buffer_stack(); + ncgensure_buffer_stack(); - /* This block is copied from yy_switch_to_buffer. */ + /* This block is copied from ncg_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ @@ -3013,27 +2796,27 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); + /* copied from ncg_switch_to_buffer. */ + ncg_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) +void ncgpop_buffer_state (void) { if (!YY_CURRENT_BUFFER) return; - yy_delete_buffer(YY_CURRENT_BUFFER ); + ncg_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( ); + ncg_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } @@ -3041,22 +2824,22 @@ void yypop_buffer_state (void) /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ -static void yyensure_buffer_stack (void) +static void ncgensure_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; /* After all that talk, this was set to 1 anyways... */ - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ + (yy_buffer_stack) = (struct yy_buffer_state**)ncgalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + YY_FATAL_ERROR( "out of dynamic memory in ncgensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); @@ -3071,12 +2854,12 @@ static void yyensure_buffer_stack (void) yy_size_t 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) = (struct yy_buffer_state**)ncgrealloc ((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()" ); + YY_FATAL_ERROR( "out of dynamic memory in ncgensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); @@ -3087,80 +2870,80 @@ static void yyensure_buffer_stack (void) /** 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 ncg_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 NULL; + return 0; - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) ncgalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in ncg_scan_buffer()" ); - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + 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 = NULL; + 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 ); + ncg_switch_to_buffer(b ); return b; } -/** Setup the input buffer state to scan a string. The next call to yylex() will +/** Setup the input buffer state to scan a string. The next call to ncglex() 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. + * ncg_scan_bytes() instead. */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) +YY_BUFFER_STATE ncg_scan_string (yyconst char * yystr ) { - - return yy_scan_bytes( yystr, (int) strlen(yystr) ); + + return ncg_scan_bytes(yystr,strlen(yystr) ); } -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will +/** Setup the input buffer state to scan the given bytes. The next call to ncglex() 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 (const char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE ncg_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - int i; - + yy_size_t i; + /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); + n = _yybytes_len + 2; + buf = (char *) ncgalloc(n ); if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + YY_FATAL_ERROR( "out of dynamic memory in ncg_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 ); + b = ncg_scan_buffer(buf,n ); if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + YY_FATAL_ERROR( "bad buffer in ncg_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. @@ -3174,9 +2957,9 @@ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) #define YY_EXIT_FAILURE 2 #endif -static void yynoreturn yy_fatal_error (const char* msg ) +static void yy_fatal_error (yyconst char* msg ) { - fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -3186,142 +2969,142 @@ static void yynoreturn yy_fatal_error (const char* msg ) #define yyless(n) \ do \ { \ - /* Undo effects of setting up yytext. */ \ + /* Undo effects of setting up ncgtext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ + ncgtext[ncgleng] = (yy_hold_char); \ + (yy_c_buf_p) = ncgtext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ + ncgleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. - * + * */ -int yyget_lineno (void) +int ncgget_lineno (void) { - - return yylineno; + + return ncglineno; } /** Get the input stream. - * + * */ -FILE *yyget_in (void) +FILE *ncgget_in (void) { - return yyin; + return ncgin; } /** Get the output stream. - * + * */ -FILE *yyget_out (void) +FILE *ncgget_out (void) { - return yyout; + return ncgout; } /** Get the length of the current token. - * + * */ -int yyget_leng (void) +yy_size_t ncgget_leng (void) { - return yyleng; + return ncgleng; } /** Get the current token. - * + * */ -char *yyget_text (void) +char *ncgget_text (void) { - return yytext; + return ncgtext; } /** Set the current line number. * @param _line_number line number - * + * */ -void yyset_lineno (int _line_number ) +void ncgset_lineno (int _line_number ) { - - yylineno = _line_number; + + ncglineno = _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 + * + * @see ncg_switch_to_buffer */ -void yyset_in (FILE * _in_str ) +void ncgset_in (FILE * _in_str ) { - yyin = _in_str ; + ncgin = _in_str ; } -void yyset_out (FILE * _out_str ) +void ncgset_out (FILE * _out_str ) { - yyout = _out_str ; + ncgout = _out_str ; } -int yyget_debug (void) +int ncgget_debug (void) { - return yy_flex_debug; + return ncg_flex_debug; } -void yyset_debug (int _bdebug ) +void ncgset_debug (int _bdebug ) { - yy_flex_debug = _bdebug ; + ncg_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. + * This function is called from ncglex_destroy(), so don't allocate here. */ - (yy_buffer_stack) = NULL; + (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; + (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; + ncgin = stdin; + ncgout = stdout; #else - yyin = NULL; - yyout = NULL; + ncgin = (FILE *) 0; + ncgout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by - * yylex_init() + * ncglex_init() */ return 0; } -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) +/* ncglex_destroy is for both reentrant and non-reentrant scanners. */ +int ncglex_destroy (void) { - + /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); + ncg_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); + ncgpop_buffer_state(); } /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); + ncgfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ + * ncglex() is called, initialization will occur. */ yy_init_globals( ); return 0; @@ -3332,9 +3115,9 @@ int yylex_destroy (void) */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { - + int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; @@ -3342,7 +3125,7 @@ static void yy_flex_strncpy (char* s1, const char * s2, int n ) #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) +static int yy_flex_strlen (yyconst char * s ) { int n; for ( n = 0; s[n]; ++n ) @@ -3352,14 +3135,14 @@ static int yy_flex_strlen (const char * s ) } #endif -void *yyalloc (yy_size_t size ) +void *ncgalloc (yy_size_t size ) { - return malloc(size); + return (void *) malloc( size ); } -void *yyrealloc (void * ptr, yy_size_t size ) +void *ncgrealloc (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 @@ -3367,25 +3150,27 @@ void *yyrealloc (void * ptr, yy_size_t size ) * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return realloc(ptr, size); + return (void *) realloc( (char *) ptr, size ); } -void yyfree (void * ptr ) +void ncgfree (void * ptr ) { - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ + free( (char *) ptr ); /* see ncgrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" -#line 570 "ncgen.l" +#line 572 "ncgen.l" + + static int lexdebug(int token) { if(debug >= 2) { - char* text = yytext; - text[yyleng] = 0; + char* text = ncgtext; + text[ncgleng] = 0; fprintf(stderr,"Token=%d |%s| line=%d\n",token,text,lineno); } return token; @@ -3668,4 +3453,3 @@ collecttag(char* text, char** stagp) } return tag; } - diff --git a/ncgen/odom.c b/ncgen/odom.c index 1e5a95fbe8..1f96828d65 100644 --- a/ncgen/odom.c +++ b/ncgen/odom.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ /* $Id: odom.c,v 1.5 2010/05/27 21:34:18 dmh Exp $ */ diff --git a/ncgen/odom.h b/ncgen/odom.h index 8f959ddb7e..9cd9a8d4f6 100644 --- a/ncgen/odom.h +++ b/ncgen/odom.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ diff --git a/ncgen/semantics.c b/ncgen/semantics.c index b47886940b..7044df5e64 100644 --- a/ncgen/semantics.c +++ b/ncgen/semantics.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 2009, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ /* $Id: semantics.c,v 1.4 2010/05/24 19:59:58 dmh Exp $ */ diff --git a/ncgen/util.c b/ncgen/util.c index dde9d35e24..dfd14a1978 100644 --- a/ncgen/util.c +++ b/ncgen/util.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/util.c,v 1.4 2010/04/14 22:04:59 dmh Exp $ *********************************************************************/ @@ -577,7 +577,7 @@ prefixarraylength(Dimset* dimset, int last) -#ifdef USE_NETCDF4 +#ifdef USE_HDF5 extern int H5Eprint1(FILE * stream); #endif @@ -594,7 +594,7 @@ void check_err2(const int stat, const int cdlline, const int line, const char* f else fprintf(stderr, "ncgen: %s\n", nc_strerror(stat)); fprintf(stderr, "\t(%s:%d)\n", file,line); -#ifdef USE_NETCDF4 +#ifdef USE_HDF5 H5Eprint1(stderr); #endif fflush(stderr); @@ -661,19 +661,3 @@ kind_string(int kind) } return NULL; } - -#ifdef USE_NETCDF4i -nt -getrootid(int grpid) -{ - int current = grpid; - int parent = current; - /* see if root id */ - for(;;) { - int stat = nc_inq_grp_parent(current,&parent); - if(stat) break; - current = parent; - } - return current; -} -#endif diff --git a/ncgen/util.h b/ncgen/util.h index 7960b65131..f38c4510fe 100644 --- a/ncgen/util.h +++ b/ncgen/util.h @@ -1,7 +1,7 @@ #ifndef NCGEN_UTIL_H #define NCGEN_UTIL_H /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen/util.h,v 1.3 2010/04/04 19:39:57 dmh Exp $ *********************************************************************/ diff --git a/ncgen3/CMakeLists.txt b/ncgen3/CMakeLists.txt index 62ff36050f..73d5c198df 100644 --- a/ncgen3/CMakeLists.txt +++ b/ncgen3/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. SET(ncgen3_FILES main.c load.c escapes.c getfill.c init.c genlib.c ncgentab.c) FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.nc ${CMAKE_CURRENT_SOURCE_DIR}/*.sh ${CMAKE_CURRENT_SOURCE_DIR}/*.cdl) @@ -27,9 +33,9 @@ TARGET_LINK_LIBRARIES(ncgen3 netcdf ${ALL_TLL_LIBS}) # test scripts to work. #### IF(MSVC) - SET_TARGET_PROPERTIES(ncgen3 PROPERTIES RUNTIME_OUTPUT_DIRECTORY + SET_TARGET_PROPERTIES(ncgen3 PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(ncgen3 PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG + SET_TARGET_PROPERTIES(ncgen3 PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_BINARY_DIR}) SET_TARGET_PROPERTIES(ncgen3 PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_BINARY_DIR}) @@ -42,12 +48,12 @@ IF(ENABLE_TESTS) IF(USE_NETCDF4) SET(NCGEN3_TESTS ${NCGEN3_TESTS} run_nc4_tests) ENDIF() - + FOREACH(F ${NCGEN3_TESTS}) add_sh_test(ncgen3 ${F}) ENDFOREACH() ENDIF() -INSTALL(TARGETS ncgen3 DESTINATION bin COMPONENT utilities) +INSTALL(TARGETS ncgen3 DESTINATION bin COMPONENT utilities) SET(MAN_FILES ncgen3.1) IF(NOT MSVC) @@ -60,6 +66,5 @@ SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt XGetopt.c Makefile.am ncgen. ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") -SET(CLEANFILES c0.nc c0_64.nc c0_4.nc c0_4c.nc) +SET(CLEANFILES c0.nc c0_64.nc c0_4.nc c0_4c.nc) SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEANFILES}") - diff --git a/ncgen3/Makefile.am b/ncgen3/Makefile.am index e20f326ecc..3b4de1b84f 100644 --- a/ncgen3/Makefile.am +++ b/ncgen3/Makefile.am @@ -1,5 +1,5 @@ # This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. +# Copyright 2018, see the COPYRIGHT file for more information. # This file builds and runs the ncgen program. #LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose @@ -8,7 +8,7 @@ include $(top_srcdir)/lib_flags.am # Link to the netCDF library. -ncgen3_LDADD = ${top_builddir}/liblib/libnetcdf.la +ncgen3_LDADD = ${top_builddir}/liblib/libnetcdf.la # Build ncgen from the listed sources. bin_PROGRAMS = ncgen3 @@ -24,10 +24,10 @@ run_nc4_tests.sh XGetopt.c $(man_MANS) # There is a netcdf classic and netcdf-4 test script, but don't run # them for DLL builds. #if !BUILD_DLL -TESTS = run_tests.sh -if USE_NETCDF4 +TESTS = run_tests.sh +if USE_HDF5 TESTS += run_nc4_tests.sh -endif # USE_NETCDF4 +endif # USE_HDF5 #endif # !BUILD_DLL CLEANFILES = c0.nc c0_64.nc c0_4.nc c0_4c.nc diff --git a/ncgen3/escapes.c b/ncgen3/escapes.c index 0e746bac9e..a6a838f855 100644 --- a/ncgen3/escapes.c +++ b/ncgen3/escapes.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen3/escapes.c,v 1.2 1997/03/19 23:15:09 davis Exp $ *********************************************************************/ diff --git a/ncgen3/generic.h b/ncgen3/generic.h index dad48d7d52..9969425201 100644 --- a/ncgen3/generic.h +++ b/ncgen3/generic.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen3/generic.h,v 1.3 1997/04/07 17:23:12 russ Exp $ *********************************************************************/ diff --git a/ncgen3/genlib.c b/ncgen3/genlib.c index a54c06646e..1e728502ec 100644 --- a/ncgen3/genlib.c +++ b/ncgen3/genlib.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen3/genlib.c,v 1.54 2009/11/14 22:33:31 dmh Exp $ *********************************************************************/ diff --git a/ncgen3/genlib.h b/ncgen3/genlib.h index 45f139a68e..b5e54cc598 100644 --- a/ncgen3/genlib.h +++ b/ncgen3/genlib.h @@ -1,7 +1,7 @@ #ifndef NC_GENLIB_H #define NC_GENLIB_H /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen3/genlib.h,v 1.15 2009/12/29 18:42:35 dmh Exp $ *********************************************************************/ diff --git a/ncgen3/getfill.c b/ncgen3/getfill.c index 1fc1197d59..91c6ae6f13 100644 --- a/ncgen3/getfill.c +++ b/ncgen3/getfill.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen3/getfill.c,v 1.5 2009/11/24 22:09:09 dmh Exp $ *********************************************************************/ diff --git a/ncgen3/init.c b/ncgen3/init.c index f2fe21c2f5..068fd0eb77 100644 --- a/ncgen3/init.c +++ b/ncgen3/init.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen3/init.c,v 1.6 1997/05/23 11:41:14 russ Exp $ *********************************************************************/ diff --git a/ncgen3/load.c b/ncgen3/load.c index 401dd3d2b7..98fa9fbeb1 100644 --- a/ncgen3/load.c +++ b/ncgen3/load.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id: load.c,v 1.35 2009/11/17 18:15:08 dmh Exp $ *********************************************************************/ diff --git a/ncgen3/main.c b/ncgen3/main.c index c27f5ed6a5..0d861ad7ac 100644 --- a/ncgen3/main.c +++ b/ncgen3/main.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen3/main.c,v 1.20 2010/03/31 18:18:40 dmh Exp $ *********************************************************************/ diff --git a/ncgen3/ncgen.h b/ncgen3/ncgen.h index 5d5a5c8952..7c4e307bc7 100644 --- a/ncgen3/ncgen.h +++ b/ncgen3/ncgen.h @@ -1,7 +1,7 @@ #ifndef NC_NCGEN_H #define NC_NCGEN_H /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/ncgen3/ncgen.h,v 1.8 1997/07/07 18:27:04 russ Exp $ *********************************************************************/ diff --git a/ncgen3/ncgen.l b/ncgen3/ncgen.l index 6db3afae23..2c4c617c6a 100644 --- a/ncgen3/ncgen.l +++ b/ncgen3/ncgen.l @@ -1,6 +1,6 @@ %{ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id: ncgen.l,v 1.24 2009/12/29 18:42:36 dmh Exp $ *********************************************************************/ @@ -25,6 +25,8 @@ We include lexical definitions for all three, but use the second version. */ +extern int fileno(FILE*); + /* lex specification for tokens for ncgen */ /* Fill value used by ncdump from version 2.4 and later. Should match @@ -42,7 +44,7 @@ char errstr[100]; /* for short error messages */ #include "ncgentab.h" #define YY_BREAK /* defining as nothing eliminates unreachable - statement warnings from flex output, + statement warnings from flex output, but make sure every action ends with "return" or "break"! */ @@ -105,7 +107,7 @@ escaped \\. nonquotes ([^"\\]|{escaped})* exp ([eE][+-]?[0-9]+) %% -\/\/.* { /* comment */ +\/\/.* { /* comment */ break; } @@ -275,8 +277,8 @@ FloatInf|-?Inff { /* missing value (pre-2.4 backward compatibility) */ return (BYTE_CONST); } -[ \r\t\f]+ { /* whitespace */ - break; +[ \r\t\f]+ { /* whitespace */ + break; } . {/* Note: this next rule will not work for UTF8 characters */ return (yytext[0]) ; @@ -288,7 +290,7 @@ FloatInf|-?Inff { /* missing value (pre-2.4 backward compatibility) */ void ignore() { +#ifndef YY_NO_UNPUT yyunput(0,NULL); - +#endif } - diff --git a/ncgen3/ncgen.y b/ncgen3/ncgen.y index 5a0a431dc6..56e4776536 100644 --- a/ncgen3/ncgen.y +++ b/ncgen3/ncgen.y @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id: ncgen.y,v 1.34 2010/03/31 18:18:41 dmh Exp $ *********************************************************************/ @@ -13,11 +13,14 @@ static char SccsId[] = "$Id: ncgen.y,v 1.34 2010/03/31 18:18:41 dmh Exp $"; #include "config.h" #include #include +#include #include "netcdf.h" #include "generic.h" #include "ncgen.h" #include "genlib.h" /* for grow_darray() et al */ +extern int fileno(FILE*); + typedef struct Symbol { /* symbol table entry */ char *name; struct Symbol *next; @@ -164,7 +167,7 @@ dimdecl: dimd '=' INT_CONST } ; dimd: dim - { + { if ($1->is_dim == 1) { derror( "duplicate dimension declaration for %s", $1->name); @@ -551,7 +554,7 @@ const: CHAR_CONST if(valnum + len > var_len) { if (vars[varnum].dims[0] != rec_dim) { - derror("too many values for this variable, %d>%d", + derror("too many values for this variable, %d>%d", valnum+len, var_len); exit (5); } else {/* a record variable so grow it */ @@ -645,7 +648,7 @@ const: CHAR_CONST case NC_DOUBLE: *double_valp++ = short_val; break; - default: break; + default: break; } valnum++; } @@ -850,7 +853,7 @@ YYSTYPE lookup(char *sname) { YYSTYPE sp; deescapify(sname); /* delete escape chars from names, - * e.g. 'ab\:cd\ ef' becomes + * e.g. 'ab\:cd\ ef' becomes * 'ab:cd ef' */ for (sp = symlist; sp != (YYSTYPE) 0; sp = sp -> next) if (STREQ(sp -> name, sname)) { diff --git a/ncgen3/ncgentab.c b/ncgen3/ncgentab.c index 944442f251..d582efbaee 100644 --- a/ncgen3/ncgentab.c +++ b/ncgen3/ncgentab.c @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.6.4. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2015 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 the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -26,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.6.4" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -63,14 +63,14 @@ #define yyparse ncgparse #define yylex ncglex #define yyerror ncgerror -#define yylval ncglval -#define yychar ncgchar #define yydebug ncgdebug #define yynerrs ncgnerrs +#define yylval ncglval +#define yychar ncgchar + /* Copy the first part of user declarations. */ -/* Line 358 of yacc.c */ -#line 9 "ncgen.y" +#line 9 "ncgen.y" /* yacc.c:339 */ #ifdef sccs static char SccsId[] = "$Id: ncgen.y,v 1.34 2010/03/31 18:18:41 dmh Exp $"; @@ -78,11 +78,14 @@ static char SccsId[] = "$Id: ncgen.y,v 1.34 2010/03/31 18:18:41 dmh Exp $"; #include "config.h" #include #include +#include #include "netcdf.h" #include "generic.h" #include "ncgen.h" #include "genlib.h" /* for grow_darray() et al */ +extern int fileno(FILE*); + typedef struct Symbol { /* symbol table entry */ char *name; struct Symbol *next; @@ -94,7 +97,9 @@ typedef struct Symbol { /* symbol table entry */ } *YYSTYPE1; /* True if string a equals string b*/ +#ifndef STREQ #define STREQ(a, b) (*(a) == *(b) && strcmp((a), (b)) == 0) +#endif #define NC_UNSPECIFIED ((nc_type)0) /* unspecified (as yet) type */ #define YYSTYPE YYSTYPE1 @@ -143,14 +148,13 @@ void yyerror(char*); int yyerror(char*); #endif -/* Line 358 of yacc.c */ -#line 148 "ncgen.tab.c" +#line 152 "ncgen.tab.c" /* yacc.c:339 */ -# ifndef YY_NULL +# ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULL nullptr +# define YY_NULLPTR nullptr # else -# define YY_NULL 0 +# define YY_NULLPTR 0 # endif # endif @@ -166,7 +170,7 @@ int yyerror(char*); by #include "ncgen.tab.h". */ #ifndef YY_NCG_NCGEN_TAB_H_INCLUDED # define YY_NCG_NCGEN_TAB_H_INCLUDED -/* Enabling traces. */ +/* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -174,65 +178,51 @@ int yyerror(char*); extern int ncgdebug; #endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - NC_UNLIMITED_K = 258, - BYTE_K = 259, - CHAR_K = 260, - SHORT_K = 261, - INT_K = 262, - FLOAT_K = 263, - DOUBLE_K = 264, - IDENT = 265, - TERMSTRING = 266, - BYTE_CONST = 267, - CHAR_CONST = 268, - SHORT_CONST = 269, - INT_CONST = 270, - FLOAT_CONST = 271, - DOUBLE_CONST = 272, - DIMENSIONS = 273, - VARIABLES = 274, - NETCDF = 275, - DATA = 276, - FILLVALUE = 277 - }; + enum yytokentype + { + NC_UNLIMITED_K = 258, + BYTE_K = 259, + CHAR_K = 260, + SHORT_K = 261, + INT_K = 262, + FLOAT_K = 263, + DOUBLE_K = 264, + IDENT = 265, + TERMSTRING = 266, + BYTE_CONST = 267, + CHAR_CONST = 268, + SHORT_CONST = 269, + INT_CONST = 270, + FLOAT_CONST = 271, + DOUBLE_CONST = 272, + DIMENSIONS = 273, + VARIABLES = 274, + NETCDF = 275, + DATA = 276, + FILLVALUE = 277 + }; #endif - +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef int YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif + extern YYSTYPE ncglval; -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int ncgparse (void *YYPARSE_PARAM); -#else -int ncgparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus int ncgparse (void); -#else -int ncgparse (); -#endif -#endif /* ! YYPARSE_PARAM */ #endif /* !YY_NCG_NCGEN_TAB_H_INCLUDED */ /* Copy the second part of user declarations. */ -/* Line 377 of yacc.c */ -#line 236 "ncgen.tab.c" +#line 226 "ncgen.tab.c" /* yacc.c:358 */ #ifdef short # undef short @@ -246,11 +236,8 @@ typedef unsigned char yytype_uint8; #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -typedef signed char yytype_int8; #else -typedef short int yytype_int8; +typedef signed char yytype_int8; #endif #ifdef YYTYPE_UINT16 @@ -270,8 +257,7 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -293,6 +279,33 @@ typedef short int yytype_int16; # endif #endif +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +# else +# define YY_ATTRIBUTE(Spec) /* empty */ +# endif +#endif + +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) +# endif +#endif + /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -300,23 +313,25 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(N) (N) +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") #else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int yyi) -#else -static int -YYID (yyi) - int yyi; +# define YY_INITIAL_VALUE(Value) Value #endif -{ - return yyi; -} +#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 + #if ! defined yyoverflow || YYERROR_VERBOSE @@ -335,8 +350,7 @@ YYID (yyi) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS @@ -348,8 +362,8 @@ YYID (yyi) # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -365,7 +379,7 @@ YYID (yyi) # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -373,15 +387,13 @@ YYID (yyi) # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -391,7 +403,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc @@ -416,16 +428,16 @@ union yyalloc elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) #endif @@ -444,7 +456,7 @@ union yyalloc for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ - while (YYID (0)) + while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ @@ -460,17 +472,19 @@ union yyalloc #define YYNNTS 42 /* YYNRULES -- Number of rules. */ #define YYNRULES 79 -/* YYNRULES -- Number of states. */ +/* YYNSTATES -- Number of states. */ #define YYNSTATES 112 -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 277 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -504,57 +518,17 @@ static const yytype_uint8 yytranslate[] = }; #if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const yytype_uint8 yyprhs[] = -{ - 0, 0, 3, 4, 5, 14, 15, 18, 21, 25, - 27, 31, 35, 39, 43, 45, 47, 48, 51, 53, - 56, 60, 62, 64, 66, 69, 73, 76, 78, 80, - 82, 84, 86, 88, 90, 94, 95, 99, 101, 102, - 106, 108, 112, 114, 115, 120, 121, 126, 130, 133, - 135, 137, 139, 143, 145, 147, 149, 151, 153, 155, - 157, 159, 160, 163, 165, 168, 172, 173, 178, 180, - 184, 185, 188, 190, 192, 194, 196, 198, 200, 202 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int8 yyrhs[] = -{ - 32, 0, -1, -1, -1, 20, 23, 33, 35, 41, - 34, 65, 24, -1, -1, 18, 36, -1, 37, 25, - -1, 36, 37, 25, -1, 38, -1, 37, 26, 38, - -1, 39, 27, 15, -1, 39, 27, 17, -1, 39, - 27, 3, -1, 40, -1, 10, -1, -1, 19, 42, - -1, 44, -1, 43, 25, -1, 42, 43, 25, -1, - 45, -1, 54, -1, 56, -1, 56, 25, -1, 44, - 56, 25, -1, 46, 47, -1, 4, -1, 5, -1, - 6, -1, 7, -1, 8, -1, 9, -1, 48, -1, - 47, 26, 48, -1, -1, 50, 49, 51, -1, 10, - -1, -1, 28, 52, 29, -1, 53, -1, 52, 26, - 53, -1, 40, -1, -1, 58, 55, 27, 62, -1, - -1, 59, 57, 27, 62, -1, 60, 30, 61, -1, - 30, 61, -1, 50, -1, 10, -1, 63, -1, 62, - 26, 63, -1, 64, -1, 13, -1, 11, -1, 12, - -1, 14, -1, 15, -1, 16, -1, 17, -1, -1, - 21, 66, -1, 21, -1, 67, 25, -1, 66, 67, - 25, -1, -1, 60, 68, 27, 69, -1, 70, -1, - 69, 26, 70, -1, -1, 71, 72, -1, 13, -1, - 11, -1, 12, -1, 14, -1, 15, -1, 16, -1, - 17, -1, 22, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 114, 114, 117, 112, 130, 131, 133, 134, 136, - 137, 139, 145, 156, 164, 181, 183, 184, 185, 187, - 188, 190, 190, 190, 192, 193, 195, 197, 198, 199, - 200, 201, 202, 204, 205, 208, 207, 246, 248, 249, - 251, 252, 254, 276, 275, 285, 284, 294, 296, 302, - 312, 323, 324, 326, 335, 341, 354, 360, 366, 372, - 378, 386, 387, 388, 391, 392, 395, 394, 461, 462, - 465, 465, 517, 543, 598, 624, 650, 676, 702, 731 + 0, 119, 119, 122, 117, 135, 136, 138, 139, 141, + 142, 144, 150, 161, 169, 186, 188, 189, 190, 192, + 193, 195, 195, 195, 197, 198, 200, 202, 203, 204, + 205, 206, 207, 209, 210, 213, 212, 251, 253, 254, + 256, 257, 259, 281, 280, 290, 289, 299, 301, 307, + 317, 328, 329, 331, 340, 346, 359, 365, 371, 377, + 383, 391, 392, 393, 396, 397, 400, 399, 466, 467, + 470, 470, 522, 548, 603, 629, 655, 681, 707, 736 }; #endif @@ -573,13 +547,13 @@ static const char *const yytname[] = "vardecl", "type", "varlist", "varspec", "$@3", "var", "dimspec", "dimlist", "vdim", "attdecl", "$@4", "gattdecl", "$@5", "att", "gatt", "avar", "attr", "attvallist", "aconst", "attconst", "datasection", - "datadecls", "datadecl", "$@6", "constlist", "dconst", "$@7", "const", YY_NULL + "datadecls", "datadecl", "$@6", "constlist", "dconst", "$@7", "const", YY_NULLPTR }; #endif # ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -589,64 +563,18 @@ static const yytype_uint16 yytoknum[] = }; # endif -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = -{ - 0, 31, 33, 34, 32, 35, 35, 36, 36, 37, - 37, 38, 38, 38, 39, 40, 41, 41, 41, 42, - 42, 43, 43, 43, 44, 44, 45, 46, 46, 46, - 46, 46, 46, 47, 47, 49, 48, 50, 51, 51, - 52, 52, 53, 55, 54, 57, 56, 58, 59, 60, - 61, 62, 62, 63, 64, 64, 64, 64, 64, 64, - 64, 65, 65, 65, 66, 66, 68, 67, 69, 69, - 71, 70, 72, 72, 72, 72, 72, 72, 72, 72 -}; +#define YYPACT_NINF -73 -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 0, 0, 8, 0, 2, 2, 3, 1, - 3, 3, 3, 3, 1, 1, 0, 2, 1, 2, - 3, 1, 1, 1, 2, 3, 2, 1, 1, 1, - 1, 1, 1, 1, 3, 0, 3, 1, 0, 3, - 1, 3, 1, 0, 4, 0, 4, 3, 2, 1, - 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 2, 1, 2, 3, 0, 4, 1, 3, - 0, 2, 1, 1, 1, 1, 1, 1, 1, 1 -}; +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-73))) -/* 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 yytype_uint8 yydefact[] = -{ - 0, 0, 0, 2, 1, 5, 0, 16, 15, 6, - 0, 9, 0, 14, 0, 0, 3, 18, 0, 45, - 0, 7, 0, 0, 27, 28, 29, 30, 31, 32, - 37, 17, 0, 21, 0, 49, 22, 23, 43, 0, - 50, 48, 61, 0, 24, 0, 8, 10, 13, 11, - 12, 0, 19, 26, 33, 35, 0, 0, 63, 0, - 25, 0, 20, 0, 38, 0, 47, 66, 62, 0, - 4, 55, 56, 54, 57, 58, 59, 60, 46, 51, - 53, 34, 0, 36, 44, 0, 0, 64, 0, 42, - 0, 40, 70, 65, 52, 0, 39, 67, 68, 0, - 41, 70, 73, 74, 72, 75, 76, 77, 78, 79, - 71, 69 -}; +#define YYTABLE_NINF -1 -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int8 yydefgoto[] = -{ - -1, 2, 5, 42, 7, 9, 10, 11, 12, 13, - 16, 31, 32, 17, 33, 34, 53, 54, 64, 35, - 83, 90, 91, 36, 56, 37, 45, 38, 19, 39, - 41, 78, 79, 80, 59, 68, 69, 85, 97, 98, - 99, 110 -}; +#define yytable_value_is_error(Yytable_value) \ + 0 -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -73 + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const yytype_int8 yypact[] = { 10, 3, 31, -73, -73, 19, 36, 6, -73, 36, @@ -663,7 +591,26 @@ static const yytype_int8 yypact[] = -73, -73 }; -/* YYPGOTO[NTERM-NUM]. */ + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 0, 0, 0, 2, 1, 5, 0, 16, 15, 6, + 0, 9, 0, 14, 0, 0, 3, 18, 0, 45, + 0, 7, 0, 0, 27, 28, 29, 30, 31, 32, + 37, 17, 0, 21, 0, 49, 22, 23, 43, 0, + 50, 48, 61, 0, 24, 0, 8, 10, 13, 11, + 12, 0, 19, 26, 33, 35, 0, 0, 63, 0, + 25, 0, 20, 0, 38, 0, 47, 66, 62, 0, + 4, 55, 56, 54, 57, 58, 59, 60, 46, 51, + 53, 34, 0, 36, 44, 0, 0, 64, 0, 42, + 0, 40, 70, 65, 52, 0, 39, 67, 68, 0, + 41, 70, 73, 74, 72, 75, 76, 77, 78, 79, + 71, 69 +}; + + /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { -73, -73, -73, -73, -73, -73, 49, 44, -73, -72, @@ -673,10 +620,19 @@ static const yytype_int8 yypgoto[] = -73, -73 }; -/* 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 YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -1 + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = +{ + -1, 2, 5, 42, 7, 9, 10, 11, 12, 13, + 16, 31, 32, 17, 33, 34, 53, 54, 64, 35, + 83, 90, 91, 36, 56, 37, 45, 38, 19, 39, + 41, 78, 79, 80, 59, 68, 69, 85, 97, 98, + 99, 110 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint8 yytable[] = { 55, 24, 25, 26, 27, 28, 29, 30, 48, 95, @@ -689,12 +645,6 @@ static const yytype_uint8 yytable[] = 93, 66, 101, 94, 111, 0, 86, 0, 51 }; -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-73))) - -#define yytable_value_is_error(Yytable_value) \ - YYID (0) - static const yytype_int8 yycheck[] = { 34, 4, 5, 6, 7, 8, 9, 10, 3, 26, @@ -707,8 +657,8 @@ static const yytype_int8 yycheck[] = 25, 57, 26, 88, 101, -1, 68, -1, 31 }; -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 20, 32, 23, 0, 33, 18, 35, 10, 36, @@ -725,30 +675,42 @@ static const yytype_uint8 yystos[] = 72, 70 }; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call 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. 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 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 + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 31, 33, 34, 32, 35, 35, 36, 36, 37, + 37, 38, 38, 38, 39, 40, 41, 41, 41, 42, + 42, 43, 43, 43, 44, 44, 45, 46, 46, 46, + 46, 46, 46, 47, 47, 49, 48, 50, 51, 51, + 52, 52, 53, 55, 54, 57, 56, 58, 59, 60, + 61, 62, 62, 63, 64, 64, 64, 64, 64, 64, + 64, 65, 65, 65, 66, 66, 68, 67, 69, 69, + 71, 70, 72, 72, 72, 72, 72, 72, 72, 72 +}; + + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 0, 0, 8, 0, 2, 2, 3, 1, + 3, 3, 3, 3, 1, 1, 0, 2, 1, 2, + 3, 1, 1, 1, 2, 3, 2, 1, 1, 1, + 1, 1, 1, 1, 3, 0, 3, 1, 0, 3, + 1, 3, 1, 0, 4, 0, 4, 3, 2, 1, + 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 2, 1, 2, 3, 0, 4, 1, 3, + 0, 2, 1, 1, 1, 1, 1, 1, 1, 1 +}; + + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + #define YYRECOVERING() (!!yyerrstatus) @@ -765,56 +727,15 @@ do \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) - - -#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). */ - -#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 - -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) - - - -/* This macro is provided for backward compatibility. */ - -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif + YYERROR; \ + } \ +while (0) +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 -/* YYLEX -- calling `yylex' with the right arguments. */ -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif /* Enable debugging if requested. */ #if YYDEBUG @@ -824,40 +745,36 @@ while (YYID (0)) # define YYFPRINTF fprintf # endif -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif { FILE *yyo = yyoutput; YYUSE (yyo); @@ -866,14 +783,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); # endif - switch (yytype) - { - default: - break; - } + YYUSE (yytype); } @@ -881,22 +792,11 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) | Print this symbol on YYOUTPUT. | `--------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif { - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); @@ -907,16 +807,8 @@ yy_symbol_print (yyoutput, yytype, yyvaluep) | TOP (included). | `------------------------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -#else -static void -yy_stack_print (yybottom, yytop) - yytype_int16 *yybottom; - yytype_int16 *yytop; -#endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -927,49 +819,42 @@ yy_stack_print (yybottom, yytop) YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void -yy_reduce_print (YYSTYPE *yyvsp, int yyrule) -#else -static void -yy_reduce_print (yyvsp, yyrule) - YYSTYPE *yyvsp; - int yyrule; -#endif +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { + unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - ); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, Rule); \ -} while (YYID (0)) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -983,7 +868,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -1006,15 +891,8 @@ int yydebug; # define yystrlen strlen # else /* Return the length of YYSTR. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) -#else -static YYSIZE_T -yystrlen (yystr) - const char *yystr; -#endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) @@ -1030,16 +908,8 @@ yystrlen (yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) -#else -static char * -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -#endif { char *yyd = yydest; const char *yys = yysrc; @@ -1069,27 +939,27 @@ yytnamerr (char *yyres, const char *yystr) char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } @@ -1112,12 +982,11 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = YY_NULL; + const char *yyformat = YY_NULLPTR; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -1125,10 +994,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, int yycount = 0; /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. See - - 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 @@ -1177,11 +1042,13 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, break; } yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } } } } @@ -1201,10 +1068,12 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, # undef YYCASE_ } - yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } if (*yymsg_alloc < yysize) { @@ -1241,31 +1110,17 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, | Release the memory associated to this symbol. | `-----------------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yymsg, yytype, yyvaluep) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; -#endif { YYUSE (yyvaluep); - if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - switch (yytype) - { - - default: - break; - } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -1274,18 +1129,8 @@ yydestruct (yymsg, yytype, yyvaluep) /* The lookahead symbol. */ int yychar; - -#ifndef YYLVAL_INITIALIZE -# define YYLVAL_INITIALIZE() -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif - /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; - /* Number of syntax errors so far. */ int yynerrs; @@ -1294,35 +1139,16 @@ int yynerrs; | yyparse. | `----------*/ -#ifdef YYPARSE_PARAM -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void *YYPARSE_PARAM) -#else -int -yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -#endif -#else /* ! YYPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) int yyparse (void) -#else -int -yyparse () - -#endif -#endif { int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: - `yyss': related to states. - `yyvs': related to semantic values. + 'yyss': related to states. + 'yyvs': related to semantic values. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ @@ -1360,8 +1186,8 @@ yyparse () Keep to zero when no symbol should be popped. */ int yylen = 0; - yyss = yyssa; - yyvs = yyvsa; + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); @@ -1370,15 +1196,6 @@ yyparse () yyerrstatus = 0; yynerrs = 0; 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. */ - yyssp = yyss; - yyvsp = yyvs; - - YYLVAL_INITIALIZE (); goto yysetstate; /*------------------------------------------------------------. @@ -1399,23 +1216,23 @@ yyparse () #ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE @@ -1423,22 +1240,22 @@ yyparse () # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ @@ -1447,10 +1264,10 @@ yyparse () yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -1479,7 +1296,7 @@ yyparse () if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; + yychar = yylex (); } if (yychar <= YYEOF) @@ -1544,7 +1361,7 @@ yyparse () yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. + '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -1558,44 +1375,43 @@ yyparse () switch (yyn) { case 2: -/* Line 1813 of yacc.c */ -#line 114 "ncgen.y" +#line 119 "ncgen.y" /* yacc.c:1646 */ { init_netcdf(); } +#line 1381 "ncgen.tab.c" /* yacc.c:1646 */ break; case 3: -/* Line 1813 of yacc.c */ -#line 117 "ncgen.y" +#line 122 "ncgen.y" /* yacc.c:1646 */ { if (derror_count == 0) define_netcdf(netcdfname); if (derror_count > 0) exit(6); } +#line 1392 "ncgen.tab.c" /* yacc.c:1646 */ break; case 4: -/* Line 1813 of yacc.c */ -#line 125 "ncgen.y" +#line 130 "ncgen.y" /* yacc.c:1646 */ { if (derror_count == 0) close_netcdf(); } +#line 1401 "ncgen.tab.c" /* yacc.c:1646 */ break; case 11: -/* Line 1813 of yacc.c */ -#line 140 "ncgen.y" +#line 145 "ncgen.y" /* yacc.c:1646 */ { if (int_val <= 0) derror("dimension length must be positive"); dims[ndims].size = int_val; ndims++; } +#line 1411 "ncgen.tab.c" /* yacc.c:1646 */ break; case 12: -/* Line 1813 of yacc.c */ -#line 146 "ncgen.y" +#line 151 "ncgen.y" /* yacc.c:1646 */ { /* for rare case where 2^31 < dimsize < 2^32 */ if (double_val <= 0) derror("dimension length must be positive"); @@ -1606,78 +1422,78 @@ yyparse () dims[ndims].size = (size_t) double_val; ndims++; } +#line 1426 "ncgen.tab.c" /* yacc.c:1646 */ break; case 13: -/* Line 1813 of yacc.c */ -#line 157 "ncgen.y" +#line 162 "ncgen.y" /* yacc.c:1646 */ { if (rec_dim != -1) derror("only one NC_UNLIMITED dimension allowed"); rec_dim = ndims; /* the unlimited (record) dimension */ dims[ndims].size = NC_UNLIMITED; ndims++; } +#line 1437 "ncgen.tab.c" /* yacc.c:1646 */ break; case 14: -/* Line 1813 of yacc.c */ -#line 165 "ncgen.y" +#line 170 "ncgen.y" /* yacc.c:1646 */ { - if ((yyvsp[(1) - (1)])->is_dim == 1) { + if ((yyvsp[0])->is_dim == 1) { derror( "duplicate dimension declaration for %s", - (yyvsp[(1) - (1)])->name); + (yyvsp[0])->name); } - (yyvsp[(1) - (1)])->is_dim = 1; - (yyvsp[(1) - (1)])->dnum = ndims; + (yyvsp[0])->is_dim = 1; + (yyvsp[0])->dnum = ndims; /* make sure dims array will hold dimensions */ grow_darray(ndims, /* must hold ndims+1 dims */ &dims); /* grow as needed */ - dims[ndims].name = (char *) emalloc(strlen((yyvsp[(1) - (1)])->name)+1); - (void) strcpy(dims[ndims].name, (yyvsp[(1) - (1)])->name); + dims[ndims].name = (char *) emalloc(strlen((yyvsp[0])->name)+1); + (void) strcpy(dims[ndims].name, (yyvsp[0])->name); /* name for use in generated Fortran and C variables */ - dims[ndims].lname = decodify((yyvsp[(1) - (1)])->name); + dims[ndims].lname = decodify((yyvsp[0])->name); } +#line 1457 "ncgen.tab.c" /* yacc.c:1646 */ break; case 27: -/* Line 1813 of yacc.c */ -#line 197 "ncgen.y" +#line 202 "ncgen.y" /* yacc.c:1646 */ { type_code = NC_BYTE; } +#line 1463 "ncgen.tab.c" /* yacc.c:1646 */ break; case 28: -/* Line 1813 of yacc.c */ -#line 198 "ncgen.y" +#line 203 "ncgen.y" /* yacc.c:1646 */ { type_code = NC_CHAR; } +#line 1469 "ncgen.tab.c" /* yacc.c:1646 */ break; case 29: -/* Line 1813 of yacc.c */ -#line 199 "ncgen.y" +#line 204 "ncgen.y" /* yacc.c:1646 */ { type_code = NC_SHORT; } +#line 1475 "ncgen.tab.c" /* yacc.c:1646 */ break; case 30: -/* Line 1813 of yacc.c */ -#line 200 "ncgen.y" +#line 205 "ncgen.y" /* yacc.c:1646 */ { type_code = NC_INT; } +#line 1481 "ncgen.tab.c" /* yacc.c:1646 */ break; case 31: -/* Line 1813 of yacc.c */ -#line 201 "ncgen.y" +#line 206 "ncgen.y" /* yacc.c:1646 */ { type_code = NC_FLOAT; } +#line 1487 "ncgen.tab.c" /* yacc.c:1646 */ break; case 32: -/* Line 1813 of yacc.c */ -#line 202 "ncgen.y" +#line 207 "ncgen.y" /* yacc.c:1646 */ { type_code = NC_DOUBLE; } +#line 1493 "ncgen.tab.c" /* yacc.c:1646 */ break; case 35: -/* Line 1813 of yacc.c */ -#line 208 "ncgen.y" +#line 213 "ncgen.y" /* yacc.c:1646 */ { static struct vars dummyvar; @@ -1690,49 +1506,49 @@ yyparse () nvdims = 0; /* make sure variable not re-declared */ - if ((yyvsp[(1) - (1)])->is_var == 1) { + if ((yyvsp[0])->is_var == 1) { derror( "duplicate variable declaration for %s", - (yyvsp[(1) - (1)])->name); + (yyvsp[0])->name); } - (yyvsp[(1) - (1)])->is_var = 1; - (yyvsp[(1) - (1)])->vnum = nvars; + (yyvsp[0])->is_var = 1; + (yyvsp[0])->vnum = nvars; /* make sure vars array will hold variables */ grow_varray(nvars, /* must hold nvars+1 vars */ &vars); /* grow as needed */ vars[nvars] = dummyvar; /* to make Purify happy */ - vars[nvars].name = (char *) emalloc(strlen((yyvsp[(1) - (1)])->name)+1); - (void) strcpy(vars[nvars].name, (yyvsp[(1) - (1)])->name); + vars[nvars].name = (char *) emalloc(strlen((yyvsp[0])->name)+1); + (void) strcpy(vars[nvars].name, (yyvsp[0])->name); /* name for use in generated Fortran and C variables */ - vars[nvars].lname = decodify((yyvsp[(1) - (1)])->name); + vars[nvars].lname = decodify((yyvsp[0])->name); vars[nvars].type = type_code; /* set default fill value. You can override this with * the variable attribute "_FillValue". */ nc_getfill(type_code, &vars[nvars].fill_value); vars[nvars].has_data = 0; /* has no data (yet) */ } +#line 1530 "ncgen.tab.c" /* yacc.c:1646 */ break; case 36: -/* Line 1813 of yacc.c */ -#line 241 "ncgen.y" +#line 246 "ncgen.y" /* yacc.c:1646 */ { vars[nvars].ndims = nvdims; nvars++; } +#line 1539 "ncgen.tab.c" /* yacc.c:1646 */ break; case 42: -/* Line 1813 of yacc.c */ -#line 255 "ncgen.y" +#line 260 "ncgen.y" /* yacc.c:1646 */ { if (nvdims >= NC_MAX_VAR_DIMS) { derror("%s has too many dimensions",vars[nvars].name); } - if ((yyvsp[(1) - (1)])->is_dim == 1) - dimnum = (yyvsp[(1) - (1)])->dnum; + if ((yyvsp[0])->is_dim == 1) + dimnum = (yyvsp[0])->dnum; else { derror( "%s is not declared as a dimension", - (yyvsp[(1) - (1)])->name); + (yyvsp[0])->name); dimnum = ndims; } if (rec_dim != -1 && dimnum == rec_dim && nvdims != 0) { @@ -1743,99 +1559,99 @@ yyparse () vars[nvars].dims[nvdims] = dimnum; nvdims++; } +#line 1563 "ncgen.tab.c" /* yacc.c:1646 */ break; case 43: -/* Line 1813 of yacc.c */ -#line 276 "ncgen.y" +#line 281 "ncgen.y" /* yacc.c:1646 */ { defatt(); } +#line 1571 "ncgen.tab.c" /* yacc.c:1646 */ break; case 44: -/* Line 1813 of yacc.c */ -#line 280 "ncgen.y" +#line 285 "ncgen.y" /* yacc.c:1646 */ { equalatt(); } +#line 1579 "ncgen.tab.c" /* yacc.c:1646 */ break; case 45: -/* Line 1813 of yacc.c */ -#line 285 "ncgen.y" +#line 290 "ncgen.y" /* yacc.c:1646 */ { defatt(); } +#line 1587 "ncgen.tab.c" /* yacc.c:1646 */ break; case 46: -/* Line 1813 of yacc.c */ -#line 289 "ncgen.y" +#line 294 "ncgen.y" /* yacc.c:1646 */ { equalatt(); } +#line 1595 "ncgen.tab.c" /* yacc.c:1646 */ break; case 48: -/* Line 1813 of yacc.c */ -#line 297 "ncgen.y" +#line 302 "ncgen.y" /* yacc.c:1646 */ { varnum = NC_GLOBAL; /* handle of "global" attribute */ } +#line 1603 "ncgen.tab.c" /* yacc.c:1646 */ break; case 49: -/* Line 1813 of yacc.c */ -#line 303 "ncgen.y" - { if ((yyvsp[(1) - (1)])->is_var == 1) - varnum = (yyvsp[(1) - (1)])->vnum; +#line 308 "ncgen.y" /* yacc.c:1646 */ + { if ((yyvsp[0])->is_var == 1) + varnum = (yyvsp[0])->vnum; else { derror("%s not declared as a variable, fatal error", - (yyvsp[(1) - (1)])->name); + (yyvsp[0])->name); YYABORT; } } +#line 1616 "ncgen.tab.c" /* yacc.c:1646 */ break; case 50: -/* Line 1813 of yacc.c */ -#line 313 "ncgen.y" +#line 318 "ncgen.y" /* yacc.c:1646 */ { /* make sure atts array will hold attributes */ grow_aarray(natts, /* must hold natts+1 atts */ &atts); /* grow as needed */ - atts[natts].name = (char *) emalloc(strlen((yyvsp[(1) - (1)])->name)+1); - (void) strcpy(atts[natts].name,(yyvsp[(1) - (1)])->name); + atts[natts].name = (char *) emalloc(strlen((yyvsp[0])->name)+1); + (void) strcpy(atts[natts].name,(yyvsp[0])->name); /* name for use in generated Fortran and C variables */ - atts[natts].lname = decodify((yyvsp[(1) - (1)])->name); + atts[natts].lname = decodify((yyvsp[0])->name); } +#line 1630 "ncgen.tab.c" /* yacc.c:1646 */ break; case 53: -/* Line 1813 of yacc.c */ -#line 327 "ncgen.y" +#line 332 "ncgen.y" /* yacc.c:1646 */ { if (valtype == NC_UNSPECIFIED) valtype = atype_code; if (valtype != atype_code) derror("values for attribute must be all of same type"); } +#line 1641 "ncgen.tab.c" /* yacc.c:1646 */ break; case 54: -/* Line 1813 of yacc.c */ -#line 336 "ncgen.y" +#line 341 "ncgen.y" /* yacc.c:1646 */ { atype_code = NC_CHAR; *char_valp++ = char_val; valnum++; } +#line 1651 "ncgen.tab.c" /* yacc.c:1646 */ break; case 55: -/* Line 1813 of yacc.c */ -#line 342 "ncgen.y" +#line 347 "ncgen.y" /* yacc.c:1646 */ { atype_code = NC_CHAR; { @@ -1848,61 +1664,61 @@ yyparse () char_valp += len; } } +#line 1668 "ncgen.tab.c" /* yacc.c:1646 */ break; case 56: -/* Line 1813 of yacc.c */ -#line 355 "ncgen.y" +#line 360 "ncgen.y" /* yacc.c:1646 */ { atype_code = NC_BYTE; *byte_valp++ = byte_val; valnum++; } +#line 1678 "ncgen.tab.c" /* yacc.c:1646 */ break; case 57: -/* Line 1813 of yacc.c */ -#line 361 "ncgen.y" +#line 366 "ncgen.y" /* yacc.c:1646 */ { atype_code = NC_SHORT; *short_valp++ = short_val; valnum++; } +#line 1688 "ncgen.tab.c" /* yacc.c:1646 */ break; case 58: -/* Line 1813 of yacc.c */ -#line 367 "ncgen.y" +#line 372 "ncgen.y" /* yacc.c:1646 */ { atype_code = NC_INT; *int_valp++ = int_val; valnum++; } +#line 1698 "ncgen.tab.c" /* yacc.c:1646 */ break; case 59: -/* Line 1813 of yacc.c */ -#line 373 "ncgen.y" +#line 378 "ncgen.y" /* yacc.c:1646 */ { atype_code = NC_FLOAT; *float_valp++ = float_val; valnum++; } +#line 1708 "ncgen.tab.c" /* yacc.c:1646 */ break; case 60: -/* Line 1813 of yacc.c */ -#line 379 "ncgen.y" +#line 384 "ncgen.y" /* yacc.c:1646 */ { atype_code = NC_DOUBLE; *double_valp++ = double_val; valnum++; } +#line 1718 "ncgen.tab.c" /* yacc.c:1646 */ break; case 66: -/* Line 1813 of yacc.c */ -#line 395 "ncgen.y" +#line 400 "ncgen.y" /* yacc.c:1646 */ { valtype = vars[varnum].type; /* variable type */ valnum = 0; /* values accumulated for variable */ @@ -1953,11 +1769,11 @@ yyparse () default: break; } } +#line 1773 "ncgen.tab.c" /* yacc.c:1646 */ break; case 67: -/* Line 1813 of yacc.c */ -#line 446 "ncgen.y" +#line 451 "ncgen.y" /* yacc.c:1646 */ { if (valnum < var_len) { /* leftovers */ nc_fill(valtype, @@ -1972,11 +1788,11 @@ yyparse () put_variable(rec_start); free ((char *) rec_start); } +#line 1792 "ncgen.tab.c" /* yacc.c:1646 */ break; case 70: -/* Line 1813 of yacc.c */ -#line 465 "ncgen.y" +#line 470 "ncgen.y" /* yacc.c:1646 */ { if(valnum >= var_len) { if (vars[varnum].dims[0] != rec_dim) { /* not recvar */ @@ -2001,11 +1817,11 @@ yyparse () } not_a_string = 1; } +#line 1821 "ncgen.tab.c" /* yacc.c:1646 */ break; case 71: -/* Line 1813 of yacc.c */ -#line 490 "ncgen.y" +#line 495 "ncgen.y" /* yacc.c:1646 */ { if (not_a_string) { switch (valtype) { @@ -2031,11 +1847,11 @@ yyparse () } } } +#line 1851 "ncgen.tab.c" /* yacc.c:1646 */ break; case 72: -/* Line 1813 of yacc.c */ -#line 518 "ncgen.y" +#line 523 "ncgen.y" /* yacc.c:1646 */ { atype_code = NC_CHAR; switch (valtype) { @@ -2061,11 +1877,11 @@ yyparse () } valnum++; } +#line 1881 "ncgen.tab.c" /* yacc.c:1646 */ break; case 73: -/* Line 1813 of yacc.c */ -#line 544 "ncgen.y" +#line 549 "ncgen.y" /* yacc.c:1646 */ { not_a_string = 0; atype_code = NC_CHAR; @@ -2120,11 +1936,11 @@ yyparse () } } } +#line 1940 "ncgen.tab.c" /* yacc.c:1646 */ break; case 74: -/* Line 1813 of yacc.c */ -#line 599 "ncgen.y" +#line 604 "ncgen.y" /* yacc.c:1646 */ { atype_code = NC_BYTE; switch (valtype) { @@ -2150,11 +1966,11 @@ yyparse () } valnum++; } +#line 1970 "ncgen.tab.c" /* yacc.c:1646 */ break; case 75: -/* Line 1813 of yacc.c */ -#line 625 "ncgen.y" +#line 630 "ncgen.y" /* yacc.c:1646 */ { atype_code = NC_SHORT; switch (valtype) { @@ -2180,11 +1996,11 @@ yyparse () } valnum++; } +#line 2000 "ncgen.tab.c" /* yacc.c:1646 */ break; case 76: -/* Line 1813 of yacc.c */ -#line 651 "ncgen.y" +#line 656 "ncgen.y" /* yacc.c:1646 */ { atype_code = NC_INT; switch (valtype) { @@ -2210,11 +2026,11 @@ yyparse () } valnum++; } +#line 2030 "ncgen.tab.c" /* yacc.c:1646 */ break; case 77: -/* Line 1813 of yacc.c */ -#line 677 "ncgen.y" +#line 682 "ncgen.y" /* yacc.c:1646 */ { atype_code = NC_FLOAT; switch (valtype) { @@ -2240,11 +2056,11 @@ yyparse () } valnum++; } +#line 2060 "ncgen.tab.c" /* yacc.c:1646 */ break; case 78: -/* Line 1813 of yacc.c */ -#line 703 "ncgen.y" +#line 708 "ncgen.y" /* yacc.c:1646 */ { atype_code = NC_DOUBLE; switch (valtype) { @@ -2273,11 +2089,11 @@ yyparse () } valnum++; } +#line 2093 "ncgen.tab.c" /* yacc.c:1646 */ break; case 79: -/* Line 1813 of yacc.c */ -#line 732 "ncgen.y" +#line 737 "ncgen.y" /* yacc.c:1646 */ { /* store fill_value */ switch (valtype) { @@ -2309,11 +2125,11 @@ yyparse () } valnum++; } +#line 2129 "ncgen.tab.c" /* yacc.c:1646 */ break; -/* Line 1813 of yacc.c */ -#line 2317 "ncgen.tab.c" +#line 2133 "ncgen.tab.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2335,7 +2151,7 @@ yyparse () *++yyvsp = yyval; - /* Now `shift' the result of the reduction. Determine what state + /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -2350,9 +2166,9 @@ yyparse () goto yynewstate; -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ @@ -2403,20 +2219,20 @@ yyparse () if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } } /* Else will try to reuse lookahead token after shifting the error @@ -2435,7 +2251,7 @@ yyparse () if (/*CONSTCOND*/ 0) goto yyerrorlab; - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -2448,29 +2264,29 @@ yyparse () | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yydestruct ("Error: popping", - yystos[yystate], yyvsp); + yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -2521,14 +2337,14 @@ yyparse () yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); } - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -2539,13 +2355,9 @@ yyparse () if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - /* Make sure YYID is used. */ - return YYID (yyresult); + return yyresult; } - - -/* Line 2076 of yacc.c */ -#line 767 "ncgen.y" +#line 772 "ncgen.y" /* yacc.c:1906 */ /* HELPER PROGRAMS */ diff --git a/ncgen3/ncgentab.h b/ncgen3/ncgentab.h index a35fee6ad1..636930b00b 100644 --- a/ncgen3/ncgentab.h +++ b/ncgen3/ncgentab.h @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.6.4. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2015 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 the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -26,13 +26,13 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ #ifndef YY_NCG_NCGEN_TAB_H_INCLUDED # define YY_NCG_NCGEN_TAB_H_INCLUDED -/* Enabling traces. */ +/* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -40,57 +40,44 @@ extern int ncgdebug; #endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - NC_UNLIMITED_K = 258, - BYTE_K = 259, - CHAR_K = 260, - SHORT_K = 261, - INT_K = 262, - FLOAT_K = 263, - DOUBLE_K = 264, - IDENT = 265, - TERMSTRING = 266, - BYTE_CONST = 267, - CHAR_CONST = 268, - SHORT_CONST = 269, - INT_CONST = 270, - FLOAT_CONST = 271, - DOUBLE_CONST = 272, - DIMENSIONS = 273, - VARIABLES = 274, - NETCDF = 275, - DATA = 276, - FILLVALUE = 277 - }; + enum yytokentype + { + NC_UNLIMITED_K = 258, + BYTE_K = 259, + CHAR_K = 260, + SHORT_K = 261, + INT_K = 262, + FLOAT_K = 263, + DOUBLE_K = 264, + IDENT = 265, + TERMSTRING = 266, + BYTE_CONST = 267, + CHAR_CONST = 268, + SHORT_CONST = 269, + INT_CONST = 270, + FLOAT_CONST = 271, + DOUBLE_CONST = 272, + DIMENSIONS = 273, + VARIABLES = 274, + NETCDF = 275, + DATA = 276, + FILLVALUE = 277 + }; #endif - +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef int YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif + extern YYSTYPE ncglval; -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int ncgparse (void *YYPARSE_PARAM); -#else -int ncgparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus int ncgparse (void); -#else -int ncgparse (); -#endif -#endif /* ! YYPARSE_PARAM */ #endif /* !YY_NCG_NCGEN_TAB_H_INCLUDED */ diff --git a/ncgen3/ncgenyy.c b/ncgen3/ncgenyy.c index c65ea5b134..eb3a37a78b 100644 --- a/ncgen3/ncgenyy.c +++ b/ncgen3/ncgenyy.c @@ -26,8 +26,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 0 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -72,7 +72,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 @@ -103,6 +102,8 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#endif /* ! C99 */ + #endif /* ! FLEXINT_H */ #ifdef __cplusplus @@ -159,7 +160,15 @@ typedef unsigned int flex_uint32_t; /* Size of default input buffer. */ #ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else #define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -171,7 +180,12 @@ typedef unsigned int flex_uint32_t; typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif -extern int ncgleng; +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern yy_size_t ncgleng; extern FILE *ncgin, *ncgout; @@ -180,6 +194,7 @@ extern FILE *ncgin, *ncgout; #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ @@ -197,11 +212,6 @@ extern FILE *ncgin, *ncgout; #define unput(c) yyunput( c, (yytext_ptr) ) -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state @@ -290,7 +300,7 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* yy_hold_char holds the character lost when ncgtext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int ncgleng; +yy_size_t ncgleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; @@ -318,7 +328,7 @@ static void ncg_init_buffer (YY_BUFFER_STATE b,FILE *file ); YY_BUFFER_STATE ncg_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE ncg_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE ncg_scan_bytes (yyconst char *bytes,int len ); +YY_BUFFER_STATE ncg_scan_bytes (yyconst char *bytes,yy_size_t len ); void *ncgalloc (yy_size_t ); void *ncgrealloc (void *,yy_size_t ); @@ -361,11 +371,17 @@ extern int ncglineno; int ncglineno = 1; extern char *ncgtext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif #define yytext_ptr ncgtext 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 ); +#if defined(__GNUC__) && __GNUC__ >= 3 +__attribute__((__noreturn__)) +#endif static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the @@ -417,7 +433,7 @@ static yyconst flex_int16_t yy_accept[236] = 16, 11, 16, 10, 0 } ; -static yyconst flex_int32_t yy_ec[256] = +static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 4, 4, 1, 1, 1, 1, 1, 1, 1, @@ -449,7 +465,7 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[61] = +static yyconst YY_CHAR yy_meta[61] = { 0, 1, 1, 2, 1, 1, 1, 1, 3, 4, 4, 4, 1, 5, 5, 5, 1, 4, 5, 5, 5, @@ -459,7 +475,7 @@ static yyconst flex_int32_t yy_meta[61] = 4, 4, 4, 4, 4, 7, 1, 4, 4, 4 } ; -static yyconst flex_int16_t yy_base[246] = +static yyconst flex_uint16_t yy_base[246] = { 0, 0, 0, 327, 1206, 59, 1206, 55, 277, 54, 59, 88, 295, 124, 165, 30, 57, 159, 61, 141, 149, @@ -521,7 +537,7 @@ static yyconst flex_int16_t yy_def[246] = 235, 235, 235, 235, 235 } ; -static yyconst flex_int16_t yy_nxt[1267] = +static yyconst flex_uint16_t yy_nxt[1267] = { 0, 4, 5, 6, 5, 5, 4, 7, 8, 9, 10, 11, 12, 13, 14, 14, 4, 4, 15, 15, 15, @@ -824,7 +840,7 @@ char *ncgtext; #line 1 "ncgen.l" #line 2 "ncgen.l" /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id: ncgen.l,v 1.24 2009/12/29 18:42:36 dmh Exp $ *********************************************************************/ @@ -849,6 +865,8 @@ char *ncgtext; We include lexical definitions for all three, but use the second version. */ +extern int fileno(FILE*); + /* lex specification for tokens for ncgen */ /* Fill value used by ncdump from version 2.4 and later. Should match @@ -909,7 +927,7 @@ ID ([A-Za-z_]|{UTF8})([A-Z.@#\[\]a-z_0-9+-]|{UTF8})* /* Note: this definition of string will work for utf8 as well, although it is a very relaxed definition */ -#line 913 "lex.ncg.c" +#line 931 "lex.ncg.c" #define INITIAL 0 @@ -942,19 +960,19 @@ void ncgset_extra (YY_EXTRA_TYPE user_defined ); FILE *ncgget_in (void ); -void ncgset_in (FILE * in_str ); +void ncgset_in (FILE * _in_str ); FILE *ncgget_out (void ); -void ncgset_out (FILE * out_str ); +void ncgset_out (FILE * _out_str ); -int ncgget_leng (void ); +yy_size_t ncgget_leng (void ); char *ncgget_text (void ); int ncgget_lineno (void ); -void ncgset_lineno (int line_number ); +void ncgset_lineno (int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. @@ -968,8 +986,12 @@ extern int ncgwrap (void ); #endif #endif +#ifndef YY_NO_UNPUT + static void yyunput (int c,char *buf_ptr ); +#endif + #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif @@ -990,7 +1012,12 @@ static int input (void ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else #define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -1009,7 +1036,7 @@ static int input (void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - unsigned n; \ + size_t n; \ for ( n = 0; n < max_size && \ (c = getc( ncgin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -1077,7 +1104,7 @@ extern int ncglex (void); /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK break; +#define YY_BREAK /*LINTED*/break; #endif #define YY_RULE_SETUP \ @@ -1087,14 +1114,10 @@ extern int ncglex (void); */ YY_DECL { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; -#line 107 "ncgen.l" - -#line 1097 "lex.ncg.c" - if ( !(yy_init) ) { (yy_init) = 1; @@ -1121,7 +1144,12 @@ YY_DECL ncg_load_buffer_state( ); } - while ( 1 ) /* loops until end-of-file is reached */ + { +#line 109 "ncgen.l" + +#line 1151 "lex.ncg.c" + + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); @@ -1137,7 +1165,7 @@ YY_DECL yy_match: do { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -1178,7 +1206,7 @@ YY_DECL case 1: YY_RULE_SETUP -#line 108 "ncgen.l" +#line 110 "ncgen.l" { /* comment */ break; } @@ -1186,7 +1214,7 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 112 "ncgen.l" +#line 114 "ncgen.l" { if(ncgleng > MAXTRST) { yyerror("string too long, truncated\n"); @@ -1198,59 +1226,59 @@ YY_RULE_SETUP YY_BREAK case 3: YY_RULE_SETUP -#line 121 "ncgen.l" +#line 123 "ncgen.l" {return (FLOAT_K);} YY_BREAK case 4: YY_RULE_SETUP -#line 122 "ncgen.l" +#line 124 "ncgen.l" {return (CHAR_K);} YY_BREAK case 5: YY_RULE_SETUP -#line 123 "ncgen.l" +#line 125 "ncgen.l" {return (BYTE_K);} YY_BREAK case 6: YY_RULE_SETUP -#line 124 "ncgen.l" +#line 126 "ncgen.l" {return (SHORT_K);} YY_BREAK case 7: YY_RULE_SETUP -#line 125 "ncgen.l" +#line 127 "ncgen.l" {return (INT_K);} YY_BREAK case 8: YY_RULE_SETUP -#line 126 "ncgen.l" +#line 128 "ncgen.l" {return (DOUBLE_K);} YY_BREAK case 9: YY_RULE_SETUP -#line 127 "ncgen.l" +#line 129 "ncgen.l" {int_val = -1; return (NC_UNLIMITED_K);} YY_BREAK case 10: YY_RULE_SETUP -#line 130 "ncgen.l" +#line 132 "ncgen.l" {return (DIMENSIONS);} YY_BREAK case 11: YY_RULE_SETUP -#line 131 "ncgen.l" +#line 133 "ncgen.l" {return (VARIABLES);} YY_BREAK case 12: YY_RULE_SETUP -#line 132 "ncgen.l" +#line 134 "ncgen.l" {return (DATA);} YY_BREAK case 13: /* rule 13 can match eol */ YY_RULE_SETUP -#line 133 "ncgen.l" +#line 135 "ncgen.l" { char *s = (char*)ncgtext+strlen("netcdf"); char *t = (char*)ncgtext+ncgleng-1; @@ -1272,7 +1300,7 @@ YY_RULE_SETUP YY_BREAK case 14: YY_RULE_SETUP -#line 151 "ncgen.l" +#line 153 "ncgen.l" { /* missing value (pre-2.4 backward compatibility) */ if (ncgtext[0] == '-') { double_val = -NC_FILL_DOUBLE; @@ -1284,7 +1312,7 @@ YY_RULE_SETUP YY_BREAK case 15: YY_RULE_SETUP -#line 159 "ncgen.l" +#line 161 "ncgen.l" { /* missing value (pre-2.4 backward compatibility) */ if (ncgtext[0] == '-') { float_val = -NC_FILL_FLOAT; @@ -1296,7 +1324,7 @@ YY_RULE_SETUP YY_BREAK case 16: YY_RULE_SETUP -#line 167 "ncgen.l" +#line 169 "ncgen.l" { if (STREQ((char *)ncgtext, FILL_STRING)) return (FILLVALUE); @@ -1309,7 +1337,7 @@ YY_RULE_SETUP case 17: /* rule 17 can match eol */ YY_RULE_SETUP -#line 176 "ncgen.l" +#line 178 "ncgen.l" { lineno++ ; break; @@ -1317,7 +1345,7 @@ YY_RULE_SETUP YY_BREAK case 18: YY_RULE_SETUP -#line 181 "ncgen.l" +#line 183 "ncgen.l" { int ii; if (sscanf((char*)ncgtext, "%d", &ii) != 1) { @@ -1334,7 +1362,7 @@ YY_RULE_SETUP YY_BREAK case 19: YY_RULE_SETUP -#line 195 "ncgen.l" +#line 197 "ncgen.l" { if (sscanf((char*)ncgtext, "%le", &double_val) != 1) { sprintf(errstr,"bad long or double constant: %s",(char*)ncgtext); @@ -1345,7 +1373,7 @@ YY_RULE_SETUP YY_BREAK case 20: YY_RULE_SETUP -#line 202 "ncgen.l" +#line 204 "ncgen.l" { if (sscanf((char*)ncgtext, "%e", &float_val) != 1) { sprintf(errstr,"bad float constant: %s",(char*)ncgtext); @@ -1356,7 +1384,7 @@ YY_RULE_SETUP YY_BREAK case 21: YY_RULE_SETUP -#line 209 "ncgen.l" +#line 211 "ncgen.l" { if (sscanf((char*)ncgtext, "%hd", &short_val) != 1) { sprintf(errstr,"bad short constant: %s",(char*)ncgtext); @@ -1367,7 +1395,7 @@ YY_RULE_SETUP YY_BREAK case 22: YY_RULE_SETUP -#line 216 "ncgen.l" +#line 218 "ncgen.l" { char *ptr; errno = 0; @@ -1386,7 +1414,7 @@ YY_RULE_SETUP YY_BREAK case 23: YY_RULE_SETUP -#line 231 "ncgen.l" +#line 233 "ncgen.l" { char *ptr; long long_val; @@ -1408,7 +1436,7 @@ YY_RULE_SETUP case 24: /* rule 24 can match eol */ YY_RULE_SETUP -#line 248 "ncgen.l" +#line 250 "ncgen.l" { (void) sscanf((char*)&ncgtext[1],"%c",&byte_val); return (BYTE_CONST); @@ -1416,7 +1444,7 @@ YY_RULE_SETUP YY_BREAK case 25: YY_RULE_SETUP -#line 252 "ncgen.l" +#line 254 "ncgen.l" { byte_val = (char) strtol((char*)&ncgtext[2], (char **) 0, 8); return (BYTE_CONST); @@ -1424,7 +1452,7 @@ YY_RULE_SETUP YY_BREAK case 26: YY_RULE_SETUP -#line 256 "ncgen.l" +#line 258 "ncgen.l" { byte_val = (char) strtol((char*)&ncgtext[3], (char **) 0, 16); return (BYTE_CONST); @@ -1432,7 +1460,7 @@ YY_RULE_SETUP YY_BREAK case 27: YY_RULE_SETUP -#line 260 "ncgen.l" +#line 262 "ncgen.l" { switch ((char)ncgtext[2]) { case 'a': byte_val = '\007'; break; /* not everyone under- @@ -1453,24 +1481,24 @@ YY_RULE_SETUP YY_BREAK case 28: YY_RULE_SETUP -#line 278 "ncgen.l" +#line 280 "ncgen.l" { /* whitespace */ break; } YY_BREAK case 29: YY_RULE_SETUP -#line 281 "ncgen.l" +#line 283 "ncgen.l" {/* Note: this next rule will not work for UTF8 characters */ return (ncgtext[0]) ; } YY_BREAK case 30: YY_RULE_SETUP -#line 285 "ncgen.l" +#line 287 "ncgen.l" ECHO; YY_BREAK -#line 1474 "lex.ncg.c" +#line 1502 "lex.ncg.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1601,6 +1629,7 @@ case YY_STATE_EOF(INITIAL): "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ + } /* end of user's declarations */ } /* end of ncglex */ /* yy_get_next_buffer - try to read in a new buffer @@ -1612,9 +1641,9 @@ case YY_STATE_EOF(INITIAL): */ 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; + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = (yytext_ptr); + yy_size_t number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -1643,7 +1672,7 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -1656,21 +1685,21 @@ static int yy_get_next_buffer (void) else { - int num_to_read = + 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. */ /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -1701,7 +1730,7 @@ static int yy_get_next_buffer (void) /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), (size_t) num_to_read ); + (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } @@ -1725,9 +1754,9 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((int) ((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); + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) ncgrealloc((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()" ); @@ -1746,14 +1775,14 @@ static int yy_get_next_buffer (void) static yy_state_type yy_get_previous_state (void) { - register yy_state_type yy_current_state; - register char *yy_cp; + yy_state_type yy_current_state; + char *yy_cp; yy_current_state = (yy_start); 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); + YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -1778,10 +1807,10 @@ static int yy_get_next_buffer (void) */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { - register int yy_is_jam; - register char *yy_cp = (yy_c_buf_p); + int yy_is_jam; + char *yy_cp = (yy_c_buf_p); - register YY_CHAR yy_c = 1; + YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -1796,12 +1825,14 @@ static int yy_get_next_buffer (void) yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 235); - return yy_is_jam ? 0 : yy_current_state; + return yy_is_jam ? 0 : yy_current_state; } - static void yyunput (int c, register char * yy_bp ) +#ifndef YY_NO_UNPUT + + static void yyunput (int c, char * yy_bp ) { - register char *yy_cp; + char *yy_cp; yy_cp = (yy_c_buf_p); @@ -1811,10 +1842,10 @@ static int yy_get_next_buffer (void) if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - register int number_to_move = (yy_n_chars) + 2; - register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + yy_size_t number_to_move = (yy_n_chars) + 2; + char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - register char *source = + char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) @@ -1836,6 +1867,8 @@ static int yy_get_next_buffer (void) (yy_c_buf_p) = yy_cp; } +#endif + #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) @@ -1860,7 +1893,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -1985,7 +2018,7 @@ static void ncg_load_buffer_state (void) if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in ncg_create_buffer()" ); - b->yy_buf_size = size; + b->yy_buf_size = (yy_size_t)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. @@ -2020,10 +2053,6 @@ static void ncg_load_buffer_state (void) ncgfree((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 ncgrestart() or at EOF. @@ -2136,7 +2165,7 @@ void ncgpop_buffer_state (void) */ static void ncgensure_buffer_stack (void) { - int num_to_alloc; + yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { @@ -2144,7 +2173,7 @@ static void ncgensure_buffer_stack (void) * 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; + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ (yy_buffer_stack) = (struct yy_buffer_state**)ncgalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); @@ -2161,7 +2190,7 @@ static void ncgensure_buffer_stack (void) 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 */; + yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)ncgrealloc @@ -2228,17 +2257,17 @@ YY_BUFFER_STATE ncg_scan_string (yyconst char * yystr ) /** Setup the input buffer state to scan the given bytes. The next call to ncglex() 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 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 ncg_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE ncg_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - int i; + yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; @@ -2269,7 +2298,7 @@ YY_BUFFER_STATE ncg_scan_bytes (yyconst char * yybytes, int _yybytes_len ) static void yy_fatal_error (yyconst char* msg ) { - (void) fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -2320,7 +2349,7 @@ FILE *ncgget_out (void) /** Get the length of the current token. * */ -int ncgget_leng (void) +yy_size_t ncgget_leng (void) { return ncgleng; } @@ -2335,29 +2364,29 @@ char *ncgget_text (void) } /** Set the current line number. - * @param line_number + * @param _line_number line number * */ -void ncgset_lineno (int line_number ) +void ncgset_lineno (int _line_number ) { - ncglineno = line_number; + ncglineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. - * @param in_str A readable stream. + * @param _in_str A readable stream. * * @see ncg_switch_to_buffer */ -void ncgset_in (FILE * in_str ) +void ncgset_in (FILE * _in_str ) { - ncgin = in_str ; + ncgin = _in_str ; } -void ncgset_out (FILE * out_str ) +void ncgset_out (FILE * _out_str ) { - ncgout = out_str ; + ncgout = _out_str ; } int ncgget_debug (void) @@ -2365,9 +2394,9 @@ int ncgget_debug (void) return ncg_flex_debug; } -void ncgset_debug (int bdebug ) +void ncgset_debug (int _bdebug ) { - ncg_flex_debug = bdebug ; + ncg_flex_debug = _bdebug ; } static int yy_init_globals (void) @@ -2427,7 +2456,8 @@ int ncglex_destroy (void) #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { - register int i; + + int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } @@ -2436,7 +2466,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { - register int n; + int n; for ( n = 0; s[n]; ++n ) ; @@ -2446,11 +2476,12 @@ static int yy_flex_strlen (yyconst char * s ) void *ncgalloc (yy_size_t size ) { - return (void *) malloc( size ); + return (void *) malloc( size ); } void *ncgrealloc (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 @@ -2463,12 +2494,12 @@ void *ncgrealloc (void * ptr, yy_size_t size ) void ncgfree (void * ptr ) { - free( (char *) ptr ); /* see ncgrealloc() for (char *) cast */ + free( (char *) ptr ); /* see ncgrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" -#line 285 "ncgen.l" +#line 287 "ncgen.l" @@ -2476,8 +2507,9 @@ void ncgfree (void * ptr ) void ignore() { +#ifndef YY_NO_UNPUT yyunput(0,NULL); - +#endif } diff --git a/nctest/CMakeLists.txt b/nctest/CMakeLists.txt index 230092bb04..d7de84a6cd 100644 --- a/nctest/CMakeLists.txt +++ b/nctest/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. SET(nctest_SRC add.c atttests.c cdftests.c dimtests.c driver.c emalloc.c error.c misctest.c rec.c slabs.c val.c vardef.c varget.c vargetg.c varput.c varputg.c vartests.c vputget.c vputgetg.c) FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.nc ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) diff --git a/nctest/Makefile.am b/nctest/Makefile.am index 0ac922b30b..506c5eece4 100644 --- a/nctest/Makefile.am +++ b/nctest/Makefile.am @@ -1,5 +1,5 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. +# Copyright 2018, see the COPYRIGHT file for more information. # This file builds and runs the nctest program, which tests the netCDF # version 2 interface. @@ -7,7 +7,7 @@ # Put together AM_CPPFLAGS and AM_LDFLAGS. include $(top_srcdir)/lib_flags.am -AM_LDFLAGS += ${top_builddir}/liblib/libnetcdf.la +AM_LDFLAGS += ${top_builddir}/liblib/libnetcdf.la # Running nctest results in a file testfile.nc, which is then checked # to make sure it matches testfile_nc.sav, which was generated under @@ -31,7 +31,7 @@ TESTS = $(TESTPROGRAMS) compare_test_files.sh TEST_EXTENSIONS = .sh # compare_test_files depends on nctest executing first. -compare_test_files.log: nctest.log +compare_test_files.log: nctest.log # These are the source files for the nctest program. nctest_SOURCES = add.c add.h atttests.c cdftests.c dimtests.c driver.c \ diff --git a/nctest/add.c b/nctest/add.c index 96545dbe7e..5a6ee58d2a 100644 --- a/nctest/add.c +++ b/nctest/add.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/add.c,v 1.18 2008/06/10 19:38:03 russ Exp $ *********************************************************************/ diff --git a/nctest/add.h b/nctest/add.h index b588e86f35..214559c30f 100644 --- a/nctest/add.h +++ b/nctest/add.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/add.h,v 1.6 1996/04/30 17:56:54 davis Exp $ *********************************************************************/ diff --git a/nctest/atttests.c b/nctest/atttests.c index de6cf65775..f9d263ffeb 100644 --- a/nctest/atttests.c +++ b/nctest/atttests.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctst/atttests.c,v 1.18 2006/10/31 16:21:45 ed Exp $ *********************************************************************/ diff --git a/nctest/cdftests.c b/nctest/cdftests.c index 550860d64a..c4c5165166 100644 --- a/nctest/cdftests.c +++ b/nctest/cdftests.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/cdftests.c,v 1.23 2009/02/14 14:11:28 ed Exp $ *********************************************************************/ diff --git a/nctest/dimtests.c b/nctest/dimtests.c index 59e56b3d00..26bce98d2b 100644 --- a/nctest/dimtests.c +++ b/nctest/dimtests.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/dimtests.c,v 1.14 2006/10/31 16:21:54 ed Exp $ *********************************************************************/ diff --git a/nctest/driver.c b/nctest/driver.c index 9d0c3c1571..4559861246 100644 --- a/nctest/driver.c +++ b/nctest/driver.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993-2006, UCAR/Unidata + * Copyright 1993-2018, UCAR/Unidata * See COPYRIGHT file for copying and redistribution conditions. * * Test driver for netCDF implementation. This program performs tests @@ -35,11 +35,11 @@ determine_test_formats(int *num_formats, int *format) format[ind++] = NC_FORMAT_64BIT_OFFSET; /* Do we have netCDF-4 and netCDF-4 classic? */ -#ifdef USE_NETCDF4 +#ifdef USE_HDF5 num += 2; format[ind++] = NC_FORMAT_NETCDF4_CLASSIC; format[ind++] = NC_FORMAT_NETCDF4; -#endif /* USE_NETCDF4 */ +#endif /* USE_HDF5 */ /* Do we have CDF5? */ #ifdef ENABLE_CDF5 @@ -75,10 +75,10 @@ main(int argc, char **argv) /* Skip netCDF-4 - only netCDF-4 classic will work. */ if (format[i] == NC_FORMAT_NETCDF4) continue; - + /* Come up with a test file name. */ sprintf(testfile, "nctest_%s.nc", format_name[i]); - printf("Testing %s with file %s.\n", format_name[i], testfile); + printf("Testing %s with file %s.\n", format_name[i], testfile); /* Set the default format. */ nc_set_default_format(format[i], NULL); @@ -137,7 +137,7 @@ main(int argc, char **argv) } } - + fprintf(stderr, "\nTotal number of failures: %d\n", nerrs); if (nerrs) diff --git a/nctest/emalloc.c b/nctest/emalloc.c index 4f75d1e4f6..05dc1c51c6 100644 --- a/nctest/emalloc.c +++ b/nctest/emalloc.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/emalloc.c,v 1.11 2006/10/31 16:21:56 ed Exp $ *********************************************************************/ diff --git a/nctest/emalloc.h b/nctest/emalloc.h index d1130f12f7..accae61fce 100644 --- a/nctest/emalloc.h +++ b/nctest/emalloc.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header $ *********************************************************************/ diff --git a/nctest/error.c b/nctest/error.c index 1598d70f7b..50498b2ca4 100644 --- a/nctest/error.c +++ b/nctest/error.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/error.c,v 1.8 2004/11/16 21:33:07 russ Exp $ *********************************************************************/ diff --git a/nctest/error.h b/nctest/error.h index 0a045a1f4f..e69fe90fe9 100644 --- a/nctest/error.h +++ b/nctest/error.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header $ *********************************************************************/ diff --git a/nctest/misctest.c b/nctest/misctest.c index fcb199e6e5..bdc91a9944 100644 --- a/nctest/misctest.c +++ b/nctest/misctest.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/misctest.c,v 1.11 2006/10/31 16:21:57 ed Exp $ *********************************************************************/ diff --git a/nctest/rec.c b/nctest/rec.c index 2367aece7f..a56c6aafde 100644 --- a/nctest/rec.c +++ b/nctest/rec.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, University Corporation for Atmospheric Research + * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/rec.c,v 1.11 2006/10/31 16:21:58 ed Exp $ *********************************************************************/ diff --git a/nctest/slabs.c b/nctest/slabs.c index cac13d672f..48b4d1de7e 100644 --- a/nctest/slabs.c +++ b/nctest/slabs.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/slabs.c,v 1.13 2009/02/11 16:17:39 ed Exp $ *********************************************************************/ diff --git a/nctest/testcdf.h b/nctest/testcdf.h index 9d569e90b6..84c1c27dba 100644 --- a/nctest/testcdf.h +++ b/nctest/testcdf.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/testcdf.h,v 1.9 2006/10/31 16:23:43 ed Exp $ *********************************************************************/ diff --git a/nctest/tests.h b/nctest/tests.h index 7f6dedfb39..f2212f955f 100644 --- a/nctest/tests.h +++ b/nctest/tests.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993 - 2005, UCAR/Unidata + * Copyright 1993 - 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/tests.h,v 1.8 2006/10/31 16:23:47 ed Exp $ *********************************************************************/ diff --git a/nctest/tst_rename.c b/nctest/tst_rename.c index 0807c89949..21967894f4 100644 --- a/nctest/tst_rename.c +++ b/nctest/tst_rename.c @@ -1,5 +1,5 @@ /* This is part of the netCDF package. - Copyright 2010 University Corporation for Atmospheric Research/Unidata + Copyright 2018 University Corporation for Atmospheric Research/Unidata See COPYRIGHT file for conditions of use. Test dim rename that is causing problems with v2 API. diff --git a/nctest/val.c b/nctest/val.c index b7f0f7f622..b7d27820d3 100644 --- a/nctest/val.c +++ b/nctest/val.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/val.c,v 1.13 2006/10/31 16:22:01 ed Exp $ *********************************************************************/ diff --git a/nctest/val.h b/nctest/val.h index e78ba5acda..b1a01de3fd 100644 --- a/nctest/val.h +++ b/nctest/val.h @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/val.h,v 1.7 2006/10/31 16:23:51 ed Exp $ *********************************************************************/ diff --git a/nctest/vardef.c b/nctest/vardef.c index bf1087408d..b02df5dfdc 100644 --- a/nctest/vardef.c +++ b/nctest/vardef.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/vardef.c,v 1.18 2009/10/28 18:30:50 dmh Exp $ *********************************************************************/ diff --git a/nctest/varget.c b/nctest/varget.c index 4082e1eb3f..1f1ab41adf 100644 --- a/nctest/varget.c +++ b/nctest/varget.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/varget.c,v 1.14 2006/10/31 16:22:03 ed Exp $ *********************************************************************/ diff --git a/nctest/vargetg.c b/nctest/vargetg.c index 38df98d30e..b02f33b93b 100644 --- a/nctest/vargetg.c +++ b/nctest/vargetg.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id: vargetg.c,v 1.10 2006/10/31 16:22:04 ed Exp $ *********************************************************************/ diff --git a/nctest/varput.c b/nctest/varput.c index c3a51d3c65..2dbdf2d61d 100644 --- a/nctest/varput.c +++ b/nctest/varput.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/varput.c,v 1.14 2006/10/31 16:22:05 ed Exp $ *********************************************************************/ diff --git a/nctest/varputg.c b/nctest/varputg.c index c95d4a31e2..2ff6edd381 100644 --- a/nctest/varputg.c +++ b/nctest/varputg.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id: varputg.c,v 1.10 2006/10/31 16:22:06 ed Exp $ *********************************************************************/ diff --git a/nctest/vartests.c b/nctest/vartests.c index fca25947c4..8fe35983c7 100644 --- a/nctest/vartests.c +++ b/nctest/vartests.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/vartests.c,v 1.19 2006/10/31 16:20:49 ed Exp $ *********************************************************************/ diff --git a/nctest/vputget.c b/nctest/vputget.c index 34244fa137..8c2ff2ee93 100644 --- a/nctest/vputget.c +++ b/nctest/vputget.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Header: /upc/share/CVS/netcdf-3/nctest/vputget.c,v 1.13 2006/10/31 16:19:49 ed Exp $ *********************************************************************/ diff --git a/nctest/vputgetg.c b/nctest/vputgetg.c index 5bf931d4b5..c4b87b5370 100644 --- a/nctest/vputgetg.c +++ b/nctest/vputgetg.c @@ -1,5 +1,5 @@ /********************************************************************* - * Copyright 1993, UCAR/Unidata + * Copyright 2018, UCAR/Unidata * See netcdf/COPYRIGHT file for copying and redistribution conditions. * $Id: vputgetg.c,v 1.13 2006/10/31 16:19:40 ed Exp $ *********************************************************************/ diff --git a/oc2/CMakeLists.txt b/oc2/CMakeLists.txt index 92523aa54b..1b4b51f8aa 100644 --- a/oc2/CMakeLists.txt +++ b/oc2/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. SET(oc_SOURCES oc.c daplex.c dapparse.c dapy.c occompile.c occurlfunctions.c ocdata.c ocdebug.c ocdump.c ocinternal.c ocnode.c ochttp.c ocread.c ocutil.c xxdr.c) diff --git a/oc2/Makefile.am b/oc2/Makefile.am index b22889b6b8..96184efbed 100644 --- a/oc2/Makefile.am +++ b/oc2/Makefile.am @@ -1,5 +1,5 @@ ## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. +# Copyright 2018, see the COPYRIGHT file for more information. # This automake file generates the Makefile to build netCDF-4. The # generated makefile is not run unless the user selected to build @@ -31,7 +31,7 @@ xxdr.h EXTRA_DIST = dap.y CMakeLists.txt auth.html.in oc.css noinst_LTLIBRARIES = liboc.la -liboc_la_SOURCES = $(SRC) $(HDRS) +liboc_la_SOURCES = $(SRC) $(HDRS) liboc_la_CPPFLAGS = $(AM_CPPFLAGS) # These rule are used if someone wants to rebuild the grammar files. diff --git a/oc2/dap.y b/oc2/dap.y index 9154c61a89..b08b2a0671 100644 --- a/oc2/dap.y +++ b/oc2/dap.y @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ /*The lines down to DO NOT DELETE ... comment are specific to the C Parser. @@ -17,7 +17,7 @@ int dapdebug = 0; /*DO NOT DELETE THIS LINE*/ -%token SCAN_ALIAS +%token SCAN_ALIAS %token SCAN_ARRAY %token SCAN_ATTR %token SCAN_BYTE @@ -31,14 +31,14 @@ int dapdebug = 0; %token SCAN_GRID %token SCAN_INT16 %token SCAN_INT32 -%token SCAN_MAPS +%token SCAN_MAPS %token SCAN_MESSAGE %token SCAN_SEQUENCE %token SCAN_STRING %token SCAN_STRUCTURE %token SCAN_UINT16 %token SCAN_UINT32 -%token SCAN_URL +%token SCAN_URL /* For errorbody */ %token SCAN_PTYPE %token SCAN_PROG @@ -94,10 +94,10 @@ declaration: | SCAN_GRID '{' SCAN_ARRAY ':' declaration SCAN_MAPS ':' declarations '}' var_name ';' {if(($$=dap_makegrid(parsestate,$10,$5,$8))==null) {YYABORT;}} - | error + | error {dapsemanticerror(parsestate,OC_EBADTYPE,"Unrecognized type"); YYABORT;} ; - + base_type: SCAN_BYTE {$$=(Object)SCAN_BYTE;} @@ -144,7 +144,7 @@ attr_list: ; attribute: - alias ';' {$$=null;} /* ignored */ + alias ';' {$$=null;} /* ignored */ | SCAN_BYTE name bytes ';' {$$=dap_attribute(parsestate,$2,$3,(Object)SCAN_BYTE);} | SCAN_INT16 name int16 ';' @@ -164,7 +164,7 @@ attribute: | SCAN_URL name urls ';' {$$=dap_attribute(parsestate,$2,$3,(Object)SCAN_URL);} | name '{' attr_list '}' {$$=dap_attrset(parsestate,$1,$3);} - | error + | error {dapsemanticerror(parsestate,OC_EDAS,"Illegal attribute"); YYABORT;} ; @@ -222,7 +222,7 @@ str_or_id: /* Not used float_or_int: WORD_INT {$$=$1;} - | WORD_DOUBLE {$$=$1;} + | WORD_DOUBLE {$$=$1;} ; */ diff --git a/oc2/daplex.c b/oc2/daplex.c index 4c543e5246..bdb4a931ac 100644 --- a/oc2/daplex.c +++ b/oc2/daplex.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include "config.h" diff --git a/oc2/dapparse.c b/oc2/dapparse.c index d67ad06eaa..f6c8801dd2 100644 --- a/oc2/dapparse.c +++ b/oc2/dapparse.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ diff --git a/oc2/dapparselex.h b/oc2/dapparselex.h index 0e763f1dc1..4b6197a8ea 100644 --- a/oc2/dapparselex.h +++ b/oc2/dapparselex.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef DAPPARSELEX_H diff --git a/oc2/oc.c b/oc2/oc.c index 821093849f..4104aa1f0d 100644 --- a/oc2/oc.c +++ b/oc2/oc.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include "config.h" diff --git a/oc2/oc.h b/oc2/oc.h index 9f6ebc53d7..b5f318cb37 100644 --- a/oc2/oc.h +++ b/oc2/oc.h @@ -1,4 +1,4 @@ -/* Copyright 2014, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT dap for more information. */ /* diff --git a/oc2/occompile.c b/oc2/occompile.c index 0c74c49ae7..c22c78bb36 100644 --- a/oc2/occompile.c +++ b/oc2/occompile.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include "config.h" diff --git a/oc2/occompile.h b/oc2/occompile.h index 0fb5ffa468..75b110adee 100644 --- a/oc2/occompile.h +++ b/oc2/occompile.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef OCCOMPILE_H diff --git a/oc2/occonstraints.h b/oc2/occonstraints.h index 4ea31effd6..a5de5fc9f6 100644 --- a/oc2/occonstraints.h +++ b/oc2/occonstraints.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef OCCONSTRAINTS_H diff --git a/oc2/occurlflags.c b/oc2/occurlflags.c index d530fc4d56..3f491727a8 100644 --- a/oc2/occurlflags.c +++ b/oc2/occurlflags.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include "config.h" diff --git a/oc2/occurlfunctions.c b/oc2/occurlfunctions.c index 0832f782df..3334ab1d5c 100644 --- a/oc2/occurlfunctions.c +++ b/oc2/occurlfunctions.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include "config.h" diff --git a/oc2/occurlfunctions.h b/oc2/occurlfunctions.h index 6d2b0a033b..74f1126e56 100644 --- a/oc2/occurlfunctions.h +++ b/oc2/occurlfunctions.h @@ -1,3 +1,13 @@ +/*! \file + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016, 2017, 2018 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. + +*/ /* * occurlfunction.h * diff --git a/oc2/ocdata.c b/oc2/ocdata.c index 6adc607079..26179d273e 100644 --- a/oc2/ocdata.c +++ b/oc2/ocdata.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include "config.h" diff --git a/oc2/ocdata.h b/oc2/ocdata.h index 0711ac3631..36c80a4142 100644 --- a/oc2/ocdata.h +++ b/oc2/ocdata.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef OCDATA_H diff --git a/oc2/ocdatatypes.h b/oc2/ocdatatypes.h index d34c508e44..93310d42d3 100644 --- a/oc2/ocdatatypes.h +++ b/oc2/ocdatatypes.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef OCDATATYPES_H diff --git a/oc2/ocdebug.c b/oc2/ocdebug.c index 986c888381..0be96d8d11 100644 --- a/oc2/ocdebug.c +++ b/oc2/ocdebug.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include "config.h" diff --git a/oc2/ocdebug.h b/oc2/ocdebug.h index ae64f085df..c0ac64315d 100644 --- a/oc2/ocdebug.h +++ b/oc2/ocdebug.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef OCOCDBG_H diff --git a/oc2/ocdump.c b/oc2/ocdump.c index 839eb9362c..5672b1c900 100644 --- a/oc2/ocdump.c +++ b/oc2/ocdump.c @@ -1,14 +1,17 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include "config.h" #include +#include #ifdef HAVE_SYS_STAT_H #include #endif +extern int fileno(FILE*); + #include "ocinternal.h" #include "ocdebug.h" diff --git a/oc2/ocdump.h b/oc2/ocdump.h index c9463155d2..1a6eba5367 100644 --- a/oc2/ocdump.h +++ b/oc2/ocdump.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef OCDUMP_H diff --git a/oc2/ochttp.c b/oc2/ochttp.c index cbb1b76cba..e6ae849c5d 100644 --- a/oc2/ochttp.c +++ b/oc2/ochttp.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include "config.h" diff --git a/oc2/ochttp.h b/oc2/ochttp.h index ab720ed39e..284fe87cfb 100644 --- a/oc2/ochttp.h +++ b/oc2/ochttp.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef HTTP_H diff --git a/oc2/ocinternal.c b/oc2/ocinternal.c index 947d17c3cd..9450ce9ea8 100644 --- a/oc2/ocinternal.c +++ b/oc2/ocinternal.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include "config.h" diff --git a/oc2/ocinternal.h b/oc2/ocinternal.h index f0e4642236..58d51fc0d9 100644 --- a/oc2/ocinternal.h +++ b/oc2/ocinternal.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef OCINTERNAL_H diff --git a/oc2/ocnode.c b/oc2/ocnode.c index 46604837a0..b394e52ead 100644 --- a/oc2/ocnode.c +++ b/oc2/ocnode.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include "config.h" diff --git a/oc2/ocnode.h b/oc2/ocnode.h index 23f9967f15..9c59624a19 100644 --- a/oc2/ocnode.h +++ b/oc2/ocnode.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef OCNODE_H diff --git a/oc2/ocread.c b/oc2/ocread.c index 81485316dc..67cf55aacf 100644 --- a/oc2/ocread.c +++ b/oc2/ocread.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include "config.h" diff --git a/oc2/ocread.h b/oc2/ocread.h index 0d380ac1a3..f3b0e5490c 100644 --- a/oc2/ocread.h +++ b/oc2/ocread.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef READ_H diff --git a/oc2/ocutil.c b/oc2/ocutil.c index 158608f030..61ba2938c5 100644 --- a/oc2/ocutil.c +++ b/oc2/ocutil.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #include "config.h" diff --git a/oc2/ocutil.h b/oc2/ocutil.h index 453efa5833..56e960b6b4 100644 --- a/oc2/ocutil.h +++ b/oc2/ocutil.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ #ifndef OCUTIL_H diff --git a/oc2/ocx.h b/oc2/ocx.h index d00c164783..baa5d09b8a 100644 --- a/oc2/ocx.h +++ b/oc2/ocx.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT dap for more information. */ /* diff --git a/oc2/xxdr.c b/oc2/xxdr.c index 9ccb65d201..1ac74b0f8f 100644 --- a/oc2/xxdr.c +++ b/oc2/xxdr.c @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ /* diff --git a/oc2/xxdr.h b/oc2/xxdr.h index 8139892b26..6929bef749 100644 --- a/oc2/xxdr.h +++ b/oc2/xxdr.h @@ -1,4 +1,4 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. +/* Copyright 2018, UCAR/Unidata and OPeNDAP, Inc. See the COPYRIGHT file for more information. */ diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index e5ba4e21d7..9b5d30ce44 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -1,3 +1,9 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. SET(CMAKE_BUILD_TYPE "") SET(libbzip2_SOURCES blocksort.c huffman.c crctable.c randtable.c compress.c decompress.c bzlib.c H5Zbzip2.c) diff --git a/test_common.in b/test_common.in index b8af51855d..67f7cc1c0d 100644 --- a/test_common.in +++ b/test_common.in @@ -1,3 +1,10 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + TOPSRCDIR='@abs_top_srcdir@' TOPBUILDDIR='@abs_top_builddir@' diff --git a/test_prog.c b/test_prog.c index d0c6706a0d..ba9a6fd46c 100644 --- a/test_prog.c +++ b/test_prog.c @@ -1,10 +1,10 @@ -/* This is part of Unidata's netCDF package. Copyright 2009. +/* This is part of Unidata's netCDF package. Copyright 2018. This is a test program for the nc-config utility. */ #include #include int -main() +main() { printf("NetCDF version: %s\n", nc_inq_libvers()); printf("*** SUCCESS!\n");